尝试从特殊频道删除所有消息会破坏整个漫游器

时间:2019-08-29 13:43:28

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

我想让用户输入!join来加入游戏,但删除其中的所有消息,使其不完整。但是,当我这样做时,它将删除该通道中的所有消息,但会破坏该漫游器的所有其他部分。

我尝试了await message.delete()和await message.channel.purge(limit = 1)。

@client.event
async def on_message(message):
    channel = client.get_channel(590978944904331274)
    if message.channel == channel:
        await message.channel.purge(limit=1)


client.run(token)

它可以工作,但会破坏机器人的其余部分。

2 个答案:

答案 0 :(得分:0)

@client.event
async def on_message(message):
    channel = client.get_channel(590978944904331274)
    if message.channel == channel:
        await message.delete()

或您的!join命令中 如果您正在使用

async def join(ctx):
    #do your code
    await ctx.message.delete()

await ctx.message.delete()将在使用命令时删除用户消息/命令。

await message.delete()将删除任何人的消息,甚至是对话。

答案 1 :(得分:0)

遮阳篷是

从文档中:

Overriding the default provided on_message forbids any extra commands from running. To fix this, add a bot.process_commands(message) line at the end of your on_message. For example:

@bot.event
async def on_message(message):
    # do some extra stuff here

    await bot.process_commands(message)

默认的on_message包含对此协程的调用,但是当您用自己的on_message覆盖它时,您需要自己调用它。

@benjin在帖子上对此发表了评论。谢谢。