You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Discord.py机器人实现幽灵Ping后无法自动删除消息的问题求助

解决Discord机器人幽灵Ping无法删除消息的问题

嘿,我一眼就看到你代码里的小问题啦,咱们一步步解决:

1. 修复核心语法错误

你写的await response.delete少了括号!delete()是一个异步方法,必须通过括号调用才能执行删除操作。这是最直接导致消息删不掉的原因。

2. 确保机器人拥有正确权限

别忘了检查你的机器人在目标频道(ID: 870236465681010708)是否拥有管理消息权限——哪怕是删除自己发的消息,Discord也要求机器人具备这个权限哦。

3. 可选:添加延迟优化体验

如果希望用户能收到Ping提醒后消息再消失,可以加个短延迟(比如1秒),避免消息刚发送就被删除导致用户没收到通知。需要先导入asyncio模块。

修正后的完整代码示例

import asyncio

# 假设你的其他代码(client定义、prefix等)已经正确设置
@client.event
async def on_message(message):
    username = message.author.mention  # 确保这里是正确的用户提及格式,能触发Ping
    user_message = message.content
    prefix = '!'  # 替换成你的实际前缀

    if user_message.lower() == prefix + 'partners':
        general_channel = client.get_channel(870236465681010708)
        # 发送Ping消息
        response = await general_channel.send(username)
        # 验证消息是机器人发送的(其实这里可以省略,因为是我们刚发的)
        if response.author == client.user:
            # 添加1秒延迟(可选,根据需求调整时长)
            await asyncio.sleep(1)
            # 调用delete方法删除消息
            await response.delete()

    # 别忘了处理默认的命令逻辑,避免覆盖其他功能
    await client.process_commands(message)

额外说明

  • 确保username变量是正确的用户提及格式(比如用message.author.mention),这样才能成功Ping到用户。
  • 如果还是删不掉消息,去Discord服务器的角色设置里,确认机器人角色的“管理消息”权限是开启状态,并且该角色在目标频道的权限没有被单独禁用。

内容的提问来源于stack exchange,提问作者Beluga

火山引擎 最新活动