Python 我的Discord机器人有问题';s级别系统和角色赋予者

Python 我的Discord机器人有问题';s级别系统和角色赋予者,python,discord,bots,Python,Discord,Bots,所以,我正在按照一些教程为我的Discord服务器开发一个Discord机器人,我似乎不明白为什么反应角色设定者和升级系统都不起作用 对于反应角色设定者来说,重点是按照描述词的含义,将表情符号角色赋予对该表情符号做出反应的人。我得到的错误是“Member not found.”,升级系统应该将用户ID和体验级别存储在users.json文件中(确实如此)。尽管如此,它并没有像被告知的那样增加级别号,而是复制users.json中的用户ID,而不是将EXP点添加到已经存在的用户ID中 代码如下:

所以,我正在按照一些教程为我的Discord服务器开发一个Discord机器人,我似乎不明白为什么反应角色设定者和升级系统都不起作用

对于反应角色设定者来说,重点是按照描述词的含义,将表情符号角色赋予对该表情符号做出反应的人。我得到的错误是“Member not found.”,升级系统应该将用户ID和体验级别存储在users.json文件中(确实如此)。尽管如此,它并没有像被告知的那样增加级别号,而是复制users.json中的用户ID,而不是将EXP点添加到已经存在的用户ID中

代码如下:

import discord
from discord.ext import commands
import os
import json

client = commands.Bot(command_prefix="~")

@client.event
async def on_ready():
print("Bot is ready")

# Leveling System starts here! 
# Needs to be fixed.

    @client.event
async def on_member_join(member):
    with open('users.json', 'r') as f:
        users = json.load(f)

await update_data(users, member)

with open('users.json', 'w') as f:
    json.dump(users, f)

 @client.event
async def on_message(message):
with open('users.json', 'r') as f:
    users = json.load(f)

await update_data(users, message.author)
await add_experience(users, message.author, 5)
await level_up(users, message.author, message.channel)

with open('users.json', 'w') as f:
    json.dump(users, f)

async def update_data(users, user):
if not user.id in users:
    users[user.id] = {}
    users[user.id]['experience'] = 0
    users[user.id]['level'] = 1

async def add_experience(users, user, exp):
users[user.id]['experience'] += exp

async def level_up(users, user, channel):
experience = users[user.id]['experience']
lvl_start = users[user.id]['level']
lvl_end = int(experience ** (1/4))

if lvl_start < lvl_end:
    await client.send_message(channel, '{} has leveled up to level {}'.format(user.mention, lvl_end))
    users[user.id]['level'] = lvl_end

# Reaction Code starts here
# Needs to be fixed...

@client.event
async def on_raw_reaction_add(payload):
message_id = payload.message_id
if message_id == ID_redacted: # ID Redacted but in the actual file it's there
    guild_id = payload.guild_id
    guild = discord.utils.find(lambda g : g.id == guild_id, client.guilds)

    if payload.emoji.name == 'Toons':
        role = discord.utils.get(guild.roles, name='Toons')
    elif payload.emoji.name == 'Heroes':
        role = discord.utils.get(guild.roles, name='Heroes')
    elif payload.emoji.name == 'NotificationsSquad':
        role = discord.utils.get(guild.roles, name='Notifications Squad')
    else:
        role = discord.utils.get(guild.roles, name=payload.emoji.name)

    if role is not None:
        member = discord.utils.find(lambda m : m.id == payload.user_id, guild.members)
        if member is not None:
            await member.add_roles(role)
            print("done")
        else:
            print("Member not found.")
    else:
            print("Role not found.")

token = os.environ.get("Secrets")
client.run(token)
导入不一致
从discord.ext导入命令
导入操作系统
导入json
client=commands.Bot(command\u prefix=“~”)
@客户端事件
_ready()上的异步定义:
打印(“机器人准备就绪”)
#调平系统从这里开始!
#需要修复。
@客户端事件
成员加入时的异步定义(成员):
将open('users.json','r')作为f:
users=json.load(f)
等待更新_数据(用户、成员)
将open('users.json','w')作为f:
json.dump(用户,f)
@客户端事件
异步def on_消息(消息):
将open('users.json','r')作为f:
users=json.load(f)
等待更新_数据(用户,message.author)
等待添加体验(用户,message.author,5)
等待级别(用户、message.author、message.channel)
将open('users.json','w')作为f:
json.dump(用户,f)
异步def更新_数据(用户,用户):
如果不是用户中的user.id:
用户[user.id]={}
用户[user.id]['experience']=0
用户[user.id]['level']=1
异步def添加体验(用户、用户、经验):
用户[user.id]['experience']+=exp
异步def液位(用户、用户、通道):
体验=用户[user.id]['experience']
lvl_start=users[user.id]['level']
第二层=内部(经验**(1/4))
如果lvl_开始
我试着向一些朋友寻求帮助,但他们太忙了。所以,我来这里寻求帮助。我希望这是足够的信息继续下去!如果没有,请在评论中询问我是否需要更多信息