如何让Discord Bot将用户ID添加至代码或文件?(Replit Python)
实现Discord Bot的/add_admin命令(Replit Python环境)
1. 基础环境配置
- 在Replit新建Python项目,打开shell执行
pip install discord.py安装依赖库。 - 去Discord开发者平台创建Bot并获取Token,在Replit的「Secrets」面板添加
DISCORD_BOT_TOKEN,值填你的Bot Token(避免明文泄露)。
2. 核心代码实现
用JSON文件存储管理员ID(比存在代码里更靠谱,重启Bot不会丢失数据),完整代码如下:
import discord from discord.ext import commands import json import os # 开启消息内容权限,否则Bot读不到用户命令 intents = discord.Intents.default() intents.message_content = True # 设置Bot命令前缀为!,初始化Bot bot = commands.Bot(command_prefix='!', intents=intents) # 管理员存储文件路径 ADMIN_FILE = "admins.json" def load_admins(): # 读取已有的管理员列表 if os.path.exists(ADMIN_FILE): with open(ADMIN_FILE, 'r') as f: return json.load(f) # 首次运行时初始化管理员(填你的用户ID) initial_admins = ["你的用户ID"] save_admins(initial_admins) return initial_admins def save_admins(admins): # 将管理员列表写入JSON文件 with open(ADMIN_FILE, 'w') as f: json.dump(admins, f, indent=2) # 加载管理员列表 admins = load_admins() # /add_admin命令实现 @bot.command(name='add_admin') async def add_admin(ctx, user_id: str): # 校验命令发起者是否为管理员 if str(ctx.author.id) not in admins: await ctx.send("你没有权限执行这个命令!") return # 检查用户ID是否已在管理员列表中 if user_id in admins: await ctx.send(f"用户ID {user_id} 已经是管理员了!") return # 添加并保存新管理员 admins.append(user_id) save_admins(admins) await ctx.send(f"已成功添加用户ID {user_id} 为管理员!") # Bot启动提示 @bot.event async def on_ready(): print(f'已登录为 {bot.user}') print('------') # 从Secrets读取Token并启动Bot bot.run(os.getenv('DISCORD_BOT_TOKEN'))
3. 关键说明
- 权限控制:只有已存在的管理员才能执行
!add_admin命令,避免权限滥用。 - 使用方式:在Discord聊天里输入
!add_admin 目标用户ID即可完成添加(用户ID是Discord用户的数字ID,可在设置里开启开发者模式后右键用户复制)。 - Replit注意事项:Replit会自动保存
admins.json文件,但Bot长时间闲置会休眠,如需保持在线可额外添加定时请求的脚本(非核心需求,按需添加)。
内容的提问来源于stack exchange,提问作者Jonoto
相关产品推荐
相关产品推荐

