discord.py机器人亲吻指令无法正确提及用户问题求助
存在的问题
- 指令函数命名为
kiss2,实际触发指令为!kiss2,和你预期的!kiss触发规则不匹配 - 输出消息的字符串没有添加
f前缀,无法解析占位符中的变量,{target.mention}会原样输出不会替换为实际的@内容 - 多余的单独发送
target.mention逻辑会导致消息被拆分为多条,不符合预期效果 - 未@用户的提示文案为法语,且整体输出文案和你预期的中文格式不一致
修正后代码
import discord from discord.ext import commands @bot.command() async def kiss(ctx, target: discord.Member = None): # 最佳实践:None比较统一使用is if target is None: await ctx.send("你没有@任何用户哦!") else: # 字符串前加f启用变量插值,直接按预期格式输出 await ctx.send(f"{target.mention} 吻了你!来自 {ctx.author.mention}") await ctx.send("https://tenor.com/view/cony-brown-flying-kiss-love-gif-14132471")
版本适配说明
如果你使用的是discord.py 2.0及以上版本,需要额外配置成员意图才能正常解析@的用户:
- 进入Discord开发者平台,找到对应机器人的设置页,在「Privileged Gateway Intents」板块开启
Server Members Intent - 代码初始化bot时添加意图配置:
intents = discord.Intents.default() intents.members = True # 替换你原本的bot初始化语句,保持命令前缀为! bot = commands.Bot(command_prefix='!', intents=intents)
内容的提问来源于stack exchange,提问作者CROISSANT
相关产品推荐
相关产品推荐

