Python Discord Bot如何实现单条回复同时替换消息中多个指定单词
你现有代码的问题主要有两点:
- 每匹配到一个关键词就单独发送一次消息,有多少个匹配到的词就会发多少条仅替换单个词的消息
- 每次替换操作都是基于原始消息内容执行,不会叠加之前的替换结果,就算合并发送也无法实现多词同时替换
建议将替换规则调整为字典结构,映射关系更清晰,修改后的代码如下:
@client.event async def on_message(message): if message.author == client.user: return # 替换规则:键为待替换原词,值为替换后内容,后续新增规则直接在这里添加即可 replace_map = { 'test': 'nice', 'winter': 'summer' } replaced_content = message.content # 依次完成所有替换操作 for old_word, new_word in replace_map.items(): replaced_content = replaced_content.replace(old_word, new_word) # 仅当内容有修改时才发送回复,避免无匹配词时发送重复内容 if replaced_content != message.content: await message.channel.send(replaced_content) await client.process_commands(message)
以上代码会先完成全部指定词的替换,再统一发送一条最终修改后的消息,即可实现单条回复同时替换多个指定词的需求。
内容的提问来源于stack exchange,提问作者KuFyOn
相关产品推荐
相关产品推荐

