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

Python开发Discord Bot:实现提取消息内容的自动回复功能

提取消息内容实现个性化回复的方法

针对你开发Discord Bot的需求,这里提供两种实用的方法来提取消息中的名称并生成对应回复:

方法一:字符串分割(简单直接)

利用字符串的split()方法,基于已知的前缀“My name is ”分割消息内容,直接获取后面的名称部分:

@client.event
async def on_message(message):
    if client.user.id != message.author.id:
        prefix = "My name is "
        if prefix in message.content:
            # 分割前缀,取后面的部分作为名字,同时去除首尾空格
            name = message.content.split(prefix)[1].strip()
            # 处理名字为空的边界情况
            if name:
                await message.channel.send(f"Hi, {name}!")
            else:
                await message.channel.send("Hi! What's your name?")

这种方法适合格式固定的消息,代码简单易维护,但如果用户输入的前缀有变化(比如大小写不同、用“My name's”代替),就无法匹配。

方法二:正则表达式(灵活通用)

使用正则表达式可以匹配更多格式的消息,支持大小写、不同表述方式,适合扩展到类似的其他场景:

import re

@client.event
async def on_message(message):
    if client.user.id != message.author.id:
        # 正则匹配,支持大小写,兼容"My name is"或"My name's"的表述
        match = re.search(r"my name(?: is|'s) (\w+)", message.content, re.IGNORECASE)
        if match:
            name = match.group(1)
            await message.channel.send(f"Hi, {name}!")

这里的正则表达式细节:

  • re.IGNORECASE:忽略大小写,能匹配“My Name Is”“my name's”等格式
  • (?: is|'s):匹配“ is”或“'s”,不捕获这个分组
  • (\w+):捕获一个或多个字母数字/下划线作为名称(如果需要支持带空格的名字,可改成([\w\s]+))

如果需要支持更复杂的名字格式,只需调整正则的捕获部分即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:42:36