如何获取另一Discord机器人(Mee6)的指令参数值
解决方案:追踪Mee6的/spawn-item指令参数
首先,你当前的代码只打印机器人消息内容,但Mee6执行/spawn-item后的响应通常是嵌入消息(Embed),而非普通文本,直接调用message.content会输出None。需要针对Embed内容解析参数。
以下是修正后的代码:
import re import discord @client.event async def on_message(message: discord.Message): # 只处理Mee6发送的消息(Mee6的固定用户ID为159985870458322944) if message.author.id == 159985870458322944: # 检查消息是否包含Embed if message.embeds: embed = message.embeds[0] description = embed.description # 匹配Mee6典型的spawn-item响应格式:"给 <@用户ID> 生成了 x 个 [物品名称]" if description and "生成了" in description: # 用正则提取参数 member_match = re.search(r'<@(\d+)>', description) amount_match = re.search(r'(\d+) 个', description) item_match = re.search(r'个 (.+)\]', description) if member_match and amount_match and item_match: member_id = member_match.group(1) amount = amount_match.group(1) item = item_match.group(1) # 获取成员对象,若不存在则用ID代替 member = message.guild.get_member(int(member_id)) member_name = member.display_name if member else member_id # 输出或处理参数 print(f"成员:{member_name},物品:{item},数量:{amount}")
关键说明
- 过滤Mee6消息:直接通过固定ID判断,避免处理其他机器人的消息
- 读取Embed内容:Mee6的物品生成通知是嵌入消息,需从
message.embeds中提取描述文本 - 正则匹配参数:根据Mee6的实际响应格式调整正则表达式(若你的服务器中Mee6的提示语有差异,需修改匹配规则)
- 获取成员信息:通过提取的成员ID可以获取服务器内的成员对象,拿到昵称等详细信息
内容的提问来源于stack exchange,提问作者Niels
相关产品推荐
相关产品推荐

