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

如何实现Discord机器人支持用户自主选择本地设备图片发送?

解决Discord机器人让用户发送本地图片的问题

你的代码核心问题是easygui是在机器人运行的机器上打开文件选择器——不管谁调用命令,弹出窗口的都是机器人所在的PC,这完全不符合你要让用户从自己设备选图的需求。

正确解决方案:使用Slash命令的附件参数

Disnake原生支持在斜杠命令中添加文件上传选项,直接让用户调用命令时从自己设备选择图片上传,不需要依赖本地GUI工具。

修改后的代码如下:

import disnake
from disnake.ext import commands

bot = commands.Bot(command_prefix='!', intents=disnake.Intents.all())

@bot.slash_command(name="send", description="发送文本搭配自定义图片")
async def send(
    ctx: disnake.ApplicationCommandInteraction,
    txt: str,
    img: disnake.Attachment  # 定义为附件参数,自动生成上传按钮
):
    # 将用户上传的附件转换为可发送的文件对象
    file = await img.to_file()
    await ctx.channel.send(txt, file=file)
    # 给用户发送私密反馈,避免频道冗余信息
    await ctx.response.send_message("内容已成功发送", ephemeral=True)

bot.run("你的机器人令牌")

关键说明

  • 把img参数类型设为disnake.Attachment后,Discord会在命令界面自动添加文件上传按钮,用户调用命令时可直接选择自己设备上的图片。
  • 原代码中的easygui调用完全不需要,它是本地GUI工具,只适合机器人运行端的本地操作,不适合多用户场景。
  • 原代码里的channel = get(ctx.guild.channels)既未导入get函数,也没有实际用途,直接删除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:45:30