如何让discord.py bot上传文件至Dropbox并发送分享链接?
实现Discord Bot上传文件至Dropbox并发送分享链接
准备工作
- 安装Dropbox Python SDK:执行
pip install dropbox - 获取Dropbox访问令牌:在Dropbox开发者控制台创建Scoped Access类型的应用,勾选
files.content.write和files.content.read权限,生成专属访问令牌。
改造后的代码实现
替换你原来的文件发送逻辑,改成上传至Dropbox并生成分享链接:
import os import discord from dropbox import Dropbox, exceptions from dropbox.files import WriteMode from dropbox.sharing import RequestedVisibility, SharedLinkSettings # 替换成你的Dropbox访问令牌 DROPBOX_TOKEN = "你的Dropbox访问令牌" dir_path = "C:/Users/me/Documents/py/bot/files" # 初始化Dropbox客户端 dbx = Dropbox(DROPBOX_TOKEN) # 遍历目标文件夹下的文件 for filename in os.listdir(dir_path): file_path = os.path.join(dir_path, filename) if not os.path.isfile(file_path): continue try: # 上传文件至Dropbox根目录(可修改路径,比如"/bot_files/" + filename) with open(file_path, "rb") as f: dbx.files_upload(f.read(), f"/{filename}", mode=WriteMode.overwrite) # 创建公开可访问的共享链接 link_settings = SharedLinkSettings( requested_visibility=RequestedVisibility.public ) shared_link = dbx.sharing_create_shared_link_with_settings( f"/{filename}", settings=link_settings ) # 发送分享链接到Discord频道 await ctx.channel.send(f"文件 {filename} 已上传:{shared_link.url}") except exceptions.ApiError as e: await ctx.channel.send(f"上传文件 {filename} 失败:{str(e)}") except Exception as e: await ctx.channel.send(f"处理文件 {filename} 时出错:{str(e)}")
关键说明
- 上传路径:代码默认上传到Dropbox根目录,你可以修改
f"/{filename}"为自定义路径(比如"/bot_storage/{filename}"),方便分类管理文件。 - 共享权限:如果不需要公开访问,可将
RequestedVisibility.public改为RequestedVisibility.team_only或RequestedVisibility.password(需额外设置密码)。 - 大文件支持:Dropbox SDK会自动处理大文件的分块上传,无需额外编写分块逻辑,50MB级别的文件完全适配。
内容的提问来源于stack exchange,提问作者Daniel Lee
相关产品推荐
相关产品推荐

