如何用 Python 为 Discord Bot 制作验证系统?

问题描述 投票:0回答:4

我正在尝试制作一个适用于我的 Discord 服务器网络的验证系统。 这是我希望机器人在您输入“.agree”后执行的操作:

  1. 检查您是否在名称为“verify_here”的频道中发送了消息。
  2. 如果您在该频道中发送,请添加“会员”角色。
  3. 发送消息“{message.author},谢谢!”
  4. 3 秒后删除两条消息。

这是我的代码:

@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。

我怎样才能做到这一点?

python discord discord.py chatbot
4个回答
3
投票

使用

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!')

希望这是有道理的:)


0
投票

奇怪的是我没有收到任何错误消息。它就是行不通。什么也没有发生。

在这种情况下,假设您的代码不是问题:

  1. 这可能是您的机器人权限。特别是因为您没有收到任何错误消息。这里以个人经历来说说。
  2.    verify_channel = client.get_channel(868120833858621470)
       verify_role = get(member.guild.roles, id='871383440694587462')
    
    你确定这两个数字是正确的吗?特别是频道 ID。

0
投票

您需要在 Bot 对象中指定 message.content 意图,并在机器人的开发人员门户中启用它。


0
投票

尝试查看 https://github.com/ human-internet/discord-bot 获取一些指导、使用或贡献。 humanID 是 Discord 上的一个开源验证机器人,对我来说非常有效。使用 Python 和 Django 构建,易于使用,并且该公司是哈佛和 Mozilla 支持的非营利组织!

© www.soinside.com 2019 - 2024. All rights reserved.