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

Discord机器人仅自身无法使用discord.Interactions问题求助(已解决)

问题原因与解决方案

1. 与迁移至Pycord的关联

是的,这个问题大概率和从discord.py迁移到Pycord有关——两者在交互系统的实现细节、权限要求上存在差异,尤其是Pycord对交互功能的权限校验更严格。

2. 核心解决步骤

(1)确保Pycord版本为最新

旧版本的Pycord可能存在交互功能的bug,执行以下命令更新:

pip install -U py-cord

(2)检查Discord开发者门户的权限配置

登录Discord开发者门户,找到你的机器人:

  • 进入「Bot」页面,在「Privileged Gateway Intents」下,确保Message Content Intent已开启(你代码里已经设置了intents.message_content = True,必须和门户配置对应)
  • 进入「OAuth2 → URL Generator」页面,勾选bot和applications.commands权限,重新生成邀请链接邀请机器人到服务器(这是交互功能生效的关键,缺失此权限会导致所有交互请求被拒绝)

(3)代码层面的优化与错误排查

你的示例代码逻辑本身没问题,但可以补充全局交互错误处理,方便定位具体问题:

import discord
from discord.ext import commands
from discord.ui import View, Button

intents = discord.Intents.all()
intents.message_content = True

bot = commands.Bot(command_prefix='k.', intents=intents)

@bot.command()
async def button(ctx):
    # 设置view超时为180秒,超时后按钮自动失效
    view = View(timeout=180)
    
    async def but_callback(interaction):
        await interaction.response.send_message("HI!")
    
    button = Button(label='button', style=discord.ButtonStyle.blurple, emoji='🐈')
    button.callback = but_callback
    view.add_item(button)
    
    await ctx.send('click me!', view=view)

# 全局捕获交互错误,输出具体信息
@bot.event
async def on_interaction_error(interaction, error):
    await interaction.response.send_message(f"交互出错:{str(error)}", ephemeral=True)

bot.run("你的机器人token")

3. 验证步骤

  • 重启机器人,确保代码和权限配置的修改生效
  • 发送k.button命令生成按钮,点击后若仍报错,查看on_interaction_error输出的具体错误信息,针对性排查

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 18:22:46