Python I';我在分配任务前被引用了
我发现了一个似乎无法修复的错误,因为前几天我添加了一个更新。错误是在赋值之前引用了局部变量。我不确定这里有什么问题?有人能帮忙吗Python I';我在分配任务前被引用了,python,discord.py,Python,Discord.py,我发现了一个似乎无法修复的错误,因为前几天我添加了一个更新。错误是在赋值之前引用了局部变量。我不确定这里有什么问题?有人能帮忙吗 line 243, in on_reaction_add if has_message is not None: UnboundLocalError: local variable 'has_message' referenced before assignment 代码 基本上,您没有初始化变量在内存中有\u message。 就这样加上吧 async def o
line 243, in on_reaction_add
if has_message is not None:
UnboundLocalError: local variable 'has_message' referenced before assignment
代码
基本上,您没有初始化变量
在内存中有\u message
。
就这样加上吧
async def on_reaction_add(self, reaction, user):
has_message = None
server = reaction.message.server
msg = reaction.message
if server.id not in self.settings:
return
if msg.channel.id in self.settings[server.id]["ignore"]:
return
if not await self.check_roles(user, msg.author, server):
return
react =self.settings[server.id]["emoji"]
if react in str(reaction.emoji):
threshold = self.settings[server.id]["threshold"]
count = await self.get_count(server, msg)
if await self.check_is_posted(server, msg):
channel = self.bot.get_channel(self.settings[server.id]["channel"])
msg_id, count = await self.get_posted_message(server, msg)
if msg_id is not None:
msg_edit = await self.bot.get_message(channel, msg_id)
await self.bot.edit_message(msg_edit, new_content="{} **#{}**".format(reaction.emoji, count-1))
return
if count < threshold and threshold != 0:
store = {"original_message":msg.id, "new_message":None,"count":count+1}
for message in self.settings[server.id]["messages"]:
has_message = None
if msg.id == message["original_message"]:
has_message = message
if has_message is not None:
self.settings[server.id]["messages"].remove(has_message)
self.settings[server.id]["messages"].append(store)
dataIO.save_json("data/star/settings.json", self.settings)
else:
self.settings[server.id]["messages"].append(store)
dataIO.save_json("data/star/settings.json", self.settings)
return
if threshold == 0:
count = 2
# else:
async def on_reaction_add(self、reaction、user):
has_message=无
server=reaction.message.server
msg=reaction.message
如果server.id不在self.settings中:
返回
如果self.settings[server.id][“ignore”]中的msg.channel.id:
返回
如果不等待self.check_角色(用户、msg.author、服务器):
返回
react=self.settings[server.id][“emoji”]
如果在str中react(reaction.emoji):
threshold=self.settings[server.id][“threshold”]
计数=等待自我。获取计数(服务器,消息)
如果等待自检,请检查是否已发布(服务器,消息):
channel=self.bot.get_channel(self.settings[server.id][“channel”])
msg\u id,count=等待self.get\u posted\u消息(服务器,msg)
如果msg_id不是None:
msg\u edit=等待self.bot.get\u消息(频道,msg\u id)
等待self.bot.edit_消息(msg_edit,new_content=“{}**}{}**”.format(reaction.emoji,count-1))
返回
如果计数<阈值和阈值!=0:
存储={“原始消息”:msg.id,“新消息”:无,“计数”:计数+1}
对于self.settings[server.id][“messages”]中的消息:
has_message=无
如果msg.id==消息[“原始消息”]:
has_message=消息
如果has_消息不是None:
self.settings[server.id][“messages”].remove(has_message)
self.settings[server.id][“messages”].追加(存储)
save_json(“data/star/settings.json”,self.settings)
其他:
self.settings[server.id][“messages”].追加(存储)
save_json(“data/star/settings.json”,self.settings)
返回
如果阈值==0:
计数=2
#其他:
在循环中声明该变量。这意味着,如果没有循环迭代,它就不会被定义。因此,self.settings[server.id][“messages”]
为空。请删除所有与意大利面完全无关的部分。我知道,但这并不意味着所有其他部分都与问题相关。至少解释为什么OP试图访问它时它是未定义的。并修复不均匀压痕。
if has_message is not None:
self.settings[server.id]["messages"].remove(has_message)
self.settings[server.id]["messages"].append(store)
dataIO.save_json("data/star/settings.json", self.settings)
async def on_reaction_add(self, reaction, user):
has_message = None
server = reaction.message.server
msg = reaction.message
if server.id not in self.settings:
return
if msg.channel.id in self.settings[server.id]["ignore"]:
return
if not await self.check_roles(user, msg.author, server):
return
react =self.settings[server.id]["emoji"]
if react in str(reaction.emoji):
threshold = self.settings[server.id]["threshold"]
count = await self.get_count(server, msg)
if await self.check_is_posted(server, msg):
channel = self.bot.get_channel(self.settings[server.id]["channel"])
msg_id, count = await self.get_posted_message(server, msg)
if msg_id is not None:
msg_edit = await self.bot.get_message(channel, msg_id)
await self.bot.edit_message(msg_edit, new_content="{} **#{}**".format(reaction.emoji, count-1))
return
if count < threshold and threshold != 0:
store = {"original_message":msg.id, "new_message":None,"count":count+1}
for message in self.settings[server.id]["messages"]:
has_message = None
if msg.id == message["original_message"]:
has_message = message
if has_message is not None:
self.settings[server.id]["messages"].remove(has_message)
self.settings[server.id]["messages"].append(store)
dataIO.save_json("data/star/settings.json", self.settings)
else:
self.settings[server.id]["messages"].append(store)
dataIO.save_json("data/star/settings.json", self.settings)
return
if threshold == 0:
count = 2
# else: