You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Discord Python Bot替换消息指定内容后重新发送?

问题原因
  • 你重复定义了两次on_message事件处理函数,Discord.py的事件注册机制中后定义的同名函数会覆盖先定义的,所以两段逻辑无法同时生效
  • 你现有的替换逻辑没有对原始消息内容做全局替换,只是固定发送nice123,不符合替换整条消息中指定关键词的需求
解决方案

把两段逻辑合并到同一个on_message函数中,先做自身消息过滤,再执行关键词检测和替换逻辑,示例代码如下:

@client.event
async def on_message(message):
    # 第一步:过滤Bot自身发送的消息,避免循环触发
    if message.author == client.user:
        return
    
    # 配置需要替换的关键词映射,key是要匹配的原词,value是替换后的内容
    replace_map = {
        'test': 'nice123'
        # 后续要加其他替换规则直接往这个字典里加即可
    }

    new_content = message.content
    # 遍历替换规则批量替换消息内容
    for old_word, new_word in replace_map.items():
        new_content = new_content.replace(old_word, new_word)
    
    # 只有内容发生了变化才发送,避免发送无效重复消息
    if new_content != message.content:
        await message.channel.send(new_content)

    # 如果你使用的是discord.ext.commands.Bot而非基础Client,需要取消注释下方代码,否则后续注册的命令会失效
    # await client.process_commands(message)
可选优化点
  • 如果需要严格匹配完整单词而非子字符串,可以引入正则表达式的\b边界匹配规则,避免误替换包含关键词的长单词
  • 如果需要保留原消息的上下文关联,可以在发送时传入reference=message参数,让新消息直接引用原用户的发送内容

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 12:45:06