所以我想让我的机器人允许特定的消息,比如特定频道中的“/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()
任何帮助将不胜感激。
答案 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 的地方,关于它是什么类型的消息,它是在哪个频道发布的等等。