我正在尝试制作一个适用于我的 Discord 服务器网络的验证系统。 这是我希望机器人在您输入“.agree”后执行的操作:
这是我的代码:
@client.event
async def on_message(message):
verify_channel = client.get_channel(868120833858621470)
verify_role = get(member.guild.roles, id='871383440694587462')
if message.content == '.agree' in verify_channel:
await member.add_roles(message.author, verify_role)
await message.send(f'{message.author}, thanks!')
奇怪的是我没有收到任何错误消息。它就是行不通。什么也没发生。该机器人未添加任何角色,也未发送任何消息。我尝试过寻求帮助,但是关于为 Python Discord Bot 制作验证系统的指南很少。我也尝试过不同的代码布局方式,但没有任何效果。
注意: 我将在整个 Discord 服务器网络中使用这个机器人和验证系统,这意味着我希望机器人检查频道名称而不是频道 ID。
我怎样才能做到这一点?
使用
if message.content == '.agree' and message.channel == verify_channel:
await member.add_roles(message.author, verify_role)
await message.channel.send(f'{message.author}, thanks!')
而不是
if message.content == '.agree' in verify_channel:
await member.add_roles(message.author, verify_role)
await message.send(f'{message.author}, thanks!')
希望这是有道理的:)
奇怪的是我没有收到任何错误消息。它就是行不通。什么也没有发生。
在这种情况下,假设您的代码不是问题:
verify_channel = client.get_channel(868120833858621470)
verify_role = get(member.guild.roles, id='871383440694587462')
你确定这两个数字是正确的吗?特别是频道 ID。您需要在 Bot 对象中指定 message.content 意图,并在机器人的开发人员门户中启用它。
尝试查看 https://github.com/ human-internet/discord-bot 获取一些指导、使用或贡献。 humanID 是 Discord 上的一个开源验证机器人,对我来说非常有效。使用 Python 和 Django 构建,易于使用,并且该公司是哈佛和 Mozilla 支持的非营利组织!