gpt4 book ai didi

python - 为什么 discord.py 不能识别 "on_message()"之外的变量?

转载 作者:行者123 更新时间:2023-12-04 08:26:57 25 4
gpt4 key购买 nike

我的 discord.py 脚本给了我一个意外错误。它基本上标记了我在 async def on_message(): 之外定义的所有变量。但在此之下用作“未定义”。
好吧,您可以通过在 on_message() 下定义它们来轻松修复它也。我试过。
但是,问题来了:每次发送消息时,变量都会设置回您定义的值,即使您确实添加了,就像一行说如果发生这种情况,请将其更改为另一个值。 (例如前缀,正如您在下面的代码中看到的那样,我想使用名为“changeprefix”的命令更改机器人的前缀并且它可以工作,但是当使用该前缀发送另一条消息时,它不会识别它;因为在开头定义变量的行再次运行,并且全部重置。
除了删除 on_message() 之外,还有其他方法吗?并使用 discord.ext.commands或者其他的东西?我比较熟悉on-message()系统,而且如果我切换到它,我会更改整个脚本。

import discord

client = discord.Client()
token= "some nice token"
#defining here results in "UnboundLocalError: local variable 'prefix' referenced before assignment", in the first line using the variable defined here

@client.event

async def on_message(message):
#defining here results variables being refreshed each time a message is sent

最佳答案

我相信您要找的是global这是一个关于如何使用它的简单示例。

something = 1

@client.event
async def on_message(message):
global something
something = something + 1
print(something) # 2 at first iteration

#outside of on_message
print(something) # 2 it is the same
如果你想用前缀使用它,让它成为一个带有 guild.id 的字典作为键,值是前缀。
顺便说一句,使用命令会容易得多。
注意:如果您重新启动机器人,您将丢失此信息

关于python - 为什么 discord.py 不能识别 "on_message()"之外的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65214063/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com