Discord Selfbot白名单用户命令功能失效无报错,求技术帮助
修复你的Discord Selfbot命令问题
我看到你代码里有几个关键问题导致命令不生效,咱们一步步来解决:
1. 重复初始化客户端
你先创建了discord.Client()实例,接着又用commands.Bot()覆盖了它——虽然后者会生效,但完全没必要保留第一个,直接用commands.Bot就够了,它本身继承自discord.Client。
2. 白名单逻辑未读取txt文件
你的checkforuser函数只检查了单个固定ID,没有从txt文件里读取白名单列表。咱们需要修改这个逻辑,每次检查时读取文件里的所有用户ID。
3. 缺少Intents配置(Discord.py v2+必需)
Discord.py 2.0及以上版本要求明确启用消息相关的intents,否则客户端无法接收消息事件,自然也触发不了命令。
修复后的完整代码
import discord from discord.ext import commands # 配置Intents,确保能接收消息 intents = discord.Intents.default() intents.message_content = True # 只保留一个Bot实例,去掉多余的discord.Client() client = commands.Bot(command_prefix='+', self_bot=True, fetch_offline_members=False, intents=intents) def check_whitelisted(ctx): # 读取白名单文件,注意文件路径要正确,每行一个用户ID try: with open('whitelist.txt', 'r') as f: whitelisted_ids = [line.strip() for line in f if line.strip().isdigit()] # 把ctx.author.id转成字符串对比,因为文件里读出来的是字符串 return str(ctx.message.author.id) in whitelisted_ids except FileNotFoundError: # 如果文件不存在,默认拒绝(或者你可以返回False,根据需求调整) print("白名单文件whitelist.txt未找到!") return False @client.command() @commands.check(check_whitelisted) async def ping(ctx): await ctx.send('Pong!') # 启动客户端,替换成你的令牌 client.run('你的Discord令牌', bot=False)
额外注意事项
- 确保
whitelist.txt文件和你的脚本在同一目录下,文件里每行写一个用户ID(比如669311027615105030),不要加引号或其他符号。 - Discord的服务条款禁止使用selfbot,这可能导致你的账号被封禁,这个代码仅用于学习目的,请谨慎使用。
- 如果你运行后还是没反应,检查一下令牌是否正确,以及你的账号是否在对应的服务器里,并且消息能被客户端接收到。
内容的提问来源于stack exchange,提问作者wowzers
相关产品推荐
相关产品推荐

