gpt4 book ai didi

python - Discord.py message.author.id 返回回溯

转载 作者:行者123 更新时间:2023-12-01 06:26:47 29 4
gpt4 key购买 nike

所以我试图让我的discord.py 机器人只接受某些用户对某些命令的命令执行。我现在知道 ctx.author.id 表示机器人作者 ID。我听说 message.author.id 应该可以工作,但是使用 message.author.id 会引发回溯,即臭名昭著的 NameError 错误。为什么以及如何解决它?

@bot.command(description="Restarts The Bot's source file, use if bot freezes etc, [OWNER]")
async def shutdown(ctx):
if ctx.author.id == 436646726204653589 or 525334420467744768 or 218142353674731520:
embed = discord.Embed(color = 0xff0000)
embed.add_field(name="Shutdown Command Sent, Bot Rebooting in 3 seconds", value = str, inline = False)
await ctx.send(embed=embed)
await asyncio.sleep(3)
await bot.close()
os.execl(sys.executable, sys.executable, * sys.argv)
os.system("py -3 theBot.py")

bot.run(TOKEN)

最佳答案

如果您使用the commands extensionshutdown是一个命令,ctx Context 对象。
Context.author 是命令消息的作者,是 Message.author 的简写.
两者都是 User 您可以使用 User.id 的对象.

我不确定“机器人作者 ID”到底是什么意思,但如果您想获取机器人所有者的用户 ID,可以使用 Bot.owner_id ,或 Bot.owner_ids 如果机器人应用程序是基于团队的,则相反。
否则,您可以使用 Bot.user 获取 ClientUser 代表机器人,然后 ClientUser.id 获取其 ID。

“未定义错误”实际上应该是 NameError告诉您该变量未定义,正如它所说的那样,message未定义,使用前需要先定义。
您可以使用 Context.message 获取 Message 触发了正在执行的命令。

注意,if ctx.author.id == 436646726204653589 or 525334420467744768 or 218142353674731520:将始终将 if 语句输入为
ctx.author.id == 436646726204653589 or 525334420467744768 or 218142353674731520永远是True or has a lower precedence than == 。这意味着这相当于
(ctx.author.id == 436646726204653589) or 525334420467744768 or 218142353674731520 ,以及整数 525334420467744768 ,以及218142353674731520 ,将始终评估为 True .
相反,您想要检查每个 ID 是否相等。这可以通过检查元组或集合中的成员资格来完成,例如
ctx.author.id in (436646726204653589, 525334420467744768, 218142353674731520)ctx.author.id in {436646726204653589, 525334420467744768, 218142353674731520} ,分别。
看这个How to test multiple variables against a value?问题以获取更多信息。

另外,如果你不重新定义 str在任何地方(您不应该这样做,因为它是内置类),您将类本身作为嵌入值传递,并且输出将转换为字符串并显示为 <class 'str'> .

此外,我不确定您为什么尝试使用 os.execl(sys.executable, sys.executable, * sys.argv) 来执行 Python 可执行文件本身,但是 os.execl 立即替换当前进程,因此下一行永远不会运行。

关于python - Discord.py message.author.id 返回回溯,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60101693/

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