【问题标题】:Bot Discord python deleting message only of one personBot Discord python只删除一个人的消息
【发布时间】:2018-11-07 12:17:07
【问题描述】:

我正在编写一个用于不和谐的机器人并尝试删除消息,但只是其中一个机器人,因为我正在执行一些使他大量发送垃圾邮件的命令。 所以我发现批量删除效果很好的是

    @bot.command(pass_context = True)
async def purge(ctx,msglimit : int):
    deleted = await bot.purge_from(ctx.message.channel, limit=msglimit)
    await bot.say("Cleared **{}** Messages".format(len(deleted)))

但是文档显示了这个命令

def is_me(m):
    return m.author == client.user

    deleted = await client.purge_from(channel, limit=100, check=is_me)
    await client.send_message(channel, 'Deleted {} message(s)'.format(len(deleted)))

但如果有人有想法,我真的无法让它发挥作用

【问题讨论】:

  • 机器人是否有适当的权限?客户端用户是否在 msglimit 中发布了任何消息? “不起作用”并没有告诉我们有关您的问题的任何信息,请具体说明。
  • Bot 拥有所有权限,因为他可以删除所有消息,但我希望第二个代码能够仅删除机器人消息
  • 第二个代码怎么不起作用?追溯(发布)?消息不会删除(发布minimal reproducible example)?没什么可做的,如果你正确使用它,代码应该可以工作。

标签: python bots discord messages


【解决方案1】:
def is_me(m):
    return m.author == bot.user

@bot.command(pass_context = True)
async def purge(ctx):
    deleted = await bot.purge_from(ctx.message.channel, check=is_me)
    await bot.say("Cleared **{}** Messages".format(len(deleted)))

这会删除一定数量的消息(默认为 100 条)。

purge_from 方法接受一个名为 check 的参数,这是一个接受消息并返回是否应该删除该消息的函数。

如果消息作者是机器人,is_me 函数将返回 true。

这意味着调用purge 将删除拾取此命令的机器人。如果您需要机器人删除其他用户的消息,则需要更改条件。

【讨论】:

    猜你喜欢
    • 2020-08-25
    • 2021-01-28
    • 2018-07-24
    • 2020-12-03
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2021-03-27
    相关资源
    最近更新 更多