【发布时间】:2021-01-29 06:21:25
【问题描述】:
我正在尝试设计一个 Discord 机器人,如果我在主服务器上禁止用户,它可以在我的两个不同服务器上禁止用户。在测试到目前为止的进度时,一切似乎都有效,直到实际禁止用户。没有出现错误,但用户没有被禁止。当我再次尝试测试时,我不断收到 UserNotFound 错误。我重新启动了机器人,将它和测试对象用户重新添加到两台服务器,并尝试清除缓存,但机器人似乎仍然无法识别用户的存在。
这是禁止命令的代码:
async def totalban(ctx, userID):
if ctx.message.author.guild_permissions.administrator: # check if admin
if ctx.guild.id == GUILD_ID: # if admin, check if right guild
await ctx.send('Confirmed administrator on proper server.')
time.sleep(1)
global TARGET_ID
TARGET_ID = int(userID) # record target user ID
converter = UserConverter()
user = await converter.convert(ctx, userID) # convert arg to User
username = user.name + '#' + user.discriminator # easy reference in Name#1234 format
global TARGET_USERNAME
TARGET_USERNAME = username
await ctx.send('User ID ' + userID + ' corresponds to ' + username + '.')
time.sleep(1)
await ctx.send('To confirm ban of ' + username + ', type **!confirmtotalban ' + username + '** now.')
global CANCONFIRMBAN
CANCONFIRMBAN = True # allow !confirmtotalban command to function
else:
await ctx.send('Cannot run command from this server.')
else:
await ctx.send('User unauthorized to run command.')
这是我在尝试禁止测试帐户时运行的功能:
(如果有任何帮助,我在运行此代码之前从未遇到过 UserNotFound 错误。)
async def banloop(ctx):
global TARGET_ID
for guild in ctx.bot.guilds:
await guild.ban(TARGET_ID)
这是回溯:
Traceback (most recent call last):
File "...\Programs\Python\Python38\lib\site-packages\discord\ext\commands\bot.py", line 903, in invoke
await ctx.command.invoke(ctx)
File "...\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 859, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "...\Programs\Python\Python38\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "...\example_bot.py", line 41, in totalban
user = await converter.convert(ctx, userID) # convert arg to User
File "...\Programs\Python\Python38\lib\site-packages\discord\ext\commands\converter.py", line 194, in convert
raise UserNotFound(argument)
discord.ext.commands.errors.UserNotFound: User "165995850303012864" not found.
提前感谢您提供的任何帮助,如果您需要我提供更多信息,请告诉我。
【问题讨论】:
-
我没有详细查看您的代码,但您是否确保机器人有权禁止它们,因为这让我困扰了半周
-
是的,该机器人已被添加到具有禁止权限的两个服务器中。
-
这个玩家的等级是否高于机器人在服务器角色中的等级,我遇到的另一个问题
-
不,我认为它们实际上是一样的。
-
使用全局变量可能是问题的一部分,因为全局变量倾向于使代码很难调试。这是唯一修改 TARGET_ID 的位置吗?
标签: python discord discord.py python-3.8