Discord.py图片下载问题:如何实现Discord机器人自动下载图片?
Discord机器人自动下载图片实现方案
基于discord.py的核心实现
以下是直接可用的代码示例,覆盖上传附件图片和图片链接两种场景的下载:
- 导入依赖并初始化机器人
import discord from discord.ext import commands import requests import re # 必须开启所有意图,尤其是消息内容意图(需提前在Discord开发者平台配置) bot = commands.Bot(command_prefix='!', intents=discord.Intents.all())
- 消息监听与图片下载逻辑
@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)
- 启动机器人
bot.run('你的机器人TOKEN')
关键注意事项
- 权限配置:确保机器人拥有
读取消息历史、发送消息、管理消息(若需删除违规内容)的权限,且在Discord开发者平台开启Privileged Gateway Intents中的Message Content Intent。 - 目录准备:提前创建
downloads文件夹,否则保存图片时会抛出文件不存在的错误。 - 模型集成:将保存后的图片路径传入你的血腥内容检测模型,根据返回结果编写对应的处理逻辑即可。
内容的提问来源于stack exchange,提问作者7ven Perks
相关产品推荐
相关产品推荐

