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

Discord.py图片下载问题:如何实现Discord机器人自动下载图片?

Discord机器人自动下载图片实现方案

基于discord.py的核心实现

以下是直接可用的代码示例,覆盖上传附件图片和图片链接两种场景的下载:

  1. 导入依赖并初始化机器人
import discord
from discord.ext import commands
import requests
import re

# 必须开启所有意图,尤其是消息内容意图(需提前在Discord开发者平台配置)
bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
  1. 消息监听与图片下载逻辑
@bot.event
async def on_message(message):
    # 跳过机器人自身消息,避免循环触发
    if message.author.bot:
        return

    # 处理用户上传的附件图片
    for attachment in message.attachments:
        # 过滤图片格式后缀
        if attachment.filename.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
            # 保存到本地downloads目录(需提前创建该文件夹)
            await attachment.save(f'./downloads/{attachment.filename}')
            # 此处调用你的血腥内容检测模型
            # gore_result = your_model.predict(f'./downloads/{attachment.filename}')
            # 根据检测结果执行后续操作(如删除消息、警告用户)

    # 处理消息中的图片链接
    # 匹配常见图片链接的正则表达式
    image_url_regex = re.compile(r'https?://[^\s]+\.(png|jpg|jpeg|gif)', re.IGNORECASE)
    matched_urls = image_url_regex.findall(message.content)
    
    for url in matched_urls:
        try:
            # 发送请求下载图片
            resp = requests.get(url)
            resp.raise_for_status()
            # 从链接提取文件名
            filename = url.split('/')[-1]
            with open(f'./downloads/{filename}', 'wb') as f:
                f.write(resp.content)
        except Exception as err:
            print(f"下载链接图片失败: {str(err)}")

    await bot.process_commands(message)
  1. 启动机器人
bot.run('你的机器人TOKEN')

关键注意事项

  • 权限配置:确保机器人拥有读取消息历史、发送消息、管理消息(若需删除违规内容)的权限,且在Discord开发者平台开启Privileged Gateway Intents中的Message Content Intent。
  • 目录准备:提前创建downloads文件夹,否则保存图片时会抛出文件不存在的错误。
  • 模型集成:将保存后的图片路径传入你的血腥内容检测模型,根据返回结果编写对应的处理逻辑即可。

内容的提问来源于stack exchange,提问作者7ven Perks

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 22:04:52