如何在特定频道中允许特定消息与 bot python 不一致

时间:2021-01-10 09:24:48

标签: python discord discord.py discord.py-rewrite

所以我想让我的机器人允许特定的消息,比如特定频道中的“/verify”,如果有人发送了不是“验证”的消息,机器人应该删除该消息,但是只有在特定频道中,我我对这一切都不熟悉,但我编写了这段代码,但它不起作用

async def verify(ctx):
    user = ctx.message.author 
    role = 'Member' #change the role here
    try:
        await user.add_roles(discord.utils.get(user.guild.roles, name=role)) 
        await ctx.send('Welcome to our server! :white_check_mark:', delete_after=1)
    except Exception as e:
        await ctx.send('Cannot assign role. Error: ' + str(e))
    if not msg.content == '/verify':
        await client.delete_message(msg)

    await ctx.message.delete()

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

你可以在函数的开头写一个简单的检查。 例如,

@bot.command()
async def verify(ctx):
    if ctx.channel.name != "verify":
        return

    # rest of the code

此外,您还没有在代码中定义 msg。所以这也会引发错误

答案 1 :(得分:0)

您必须指定要删除的“msg”究竟是什么。 所以,而不是 msg.delete 应该足以代替:

if ctx.message.content == "verify":
   await ctx.message.delete

因为 ctx/context 是您获得 information 的地方,关于它是什么类型的消息,它是在哪个频道发布的等等。