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

如何让Pycord开发的Discord机器人在斜杠命令触发频道发送消息?

解决方案

要让机器人在触发斜杠命令的频道发送消息,只需利用Pycord的命令上下文(ApplicationContext)获取当前频道,无需硬编码查找指定名称的频道。具体修改如下:

  • 在命令函数参数中添加ctx: discord.ApplicationContext,用于获取命令触发的上下文信息
  • 删除硬编码查找stonks频道的代码
  • 使用ctx.send()直接在触发频道发送消息
  • 用user.display_name简化用户名获取逻辑(自动优先取用户服务器昵称,无昵称则用用户名)
  • 移除不必要的全局变量stripped_name

修改后的完整代码:

@bot.slash_command(name="gaycheck", description="Presents series of questions to ask user if they are gay", timeout=30)
async def check(self, ctx: discord.ApplicationContext, user: discord.Member):
    # 直接获取用户的显示名称
    name = user.display_name

    field = f'''

{name}, {random.choice(question)}

'''

    embed = discord.Embed(color=0xffffff).add_field(
        name=f'__Is {name} gay?__',
        value=field,
        inline=False,
    )

    # 在触发命令的频道发送消息
    await ctx.send(embed=embed, view=ButtonView(timeout=30))

说明:

  • ctx参数包含命令触发时的所有上下文信息,包括触发频道、发起用户、所在服务器等
  • ctx.send()会自动在触发命令的频道发送内容,无需额外查找频道
  • user.display_name是Pycord内置的便捷属性,比手动判断昵称是否存在的逻辑更简洁可靠

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 16:02:11