求各位码友帮我修一下BUG吧!敲了一个月!

这是一个QQ机器人,我作为一名初学者,敲了一个月,结果有bug。qqbot安装用

pip install qqbot

就可以。接下来是源码,求各位朋友帮我修一下!

from qqbot import QQBotSlot as qqbotslot, RunBot

# 管理员QQ号
admin_qq = '1124866658'

# 初始化群员信息字典
users = {}

# 定义积分系统相关指令
@qqbotslot
def on_sign_in(bot, contact, member, content):
    # 获取群员信息
    user = users.get(member.qq)

    # 判断是否已经签到过
    if user and user.get('signed_in'):
        bot.SendTo(contact, f"{member.name}, 你已经签到过啦!")
    else:
        # 更新积分并标记已签到
        if not user:
            user = {'name': member.name, 'qq': member.qq, 'points': 114, 'blacklisted': False}
            users[member.qq] = user
        else:
            user['points'] += 25
        user['signed_in'] = True

        bot.SendTo(contact, f"{member.name}, 恭喜你签到成功!获得25积分。")

@qqbotslot
def on_show_points(bot, contact, member, content):
    # 获取群员信息
    user = users.get(member.qq)

    if not user:
        bot.SendTo(contact, f"{member.name}, 你还没有积分哦。")
    else:
        bot.SendTo(contact, f"{member.name}, 你当前的积分是:{user['points']}。")

@qqbotslot
def on_show_leaderboard(bot, contact, member, content):
    # 对用户列表按照积分从高到低排序
    sorted_users = sorted(users.values(), key=lambda u: u['points'], reverse=True)[:10]

    # 构造榜单消息
    message = "积分榜单:\n"
    for i, user in enumerate(sorted_users):
        message += f"{i+1}. {user['name']} ({user['points']} 分)\n"

    bot.SendTo(contact, message)

# 定义黑名单相关指令
@qqbotslot
def on_handle_message(bot, contact, member, content):
    # 判断是否为管理员发送的消息
    if member.qq != admin_qq:
        return

    if content.startswith('查询黑名单'):
        blacklisted_users = [user['name'] for user in users.values() if user.get('blacklisted')]
        if blacklisted_users:
            bot.SendTo(member, f"当前在黑名单中的群员有:{','.join(blacklisted_users)}。")
        else:
            bot.SendTo(member, "没有人在黑名单中。")

    elif content.startswith('解除'):
        _, target_name, _ = content.split()
        target_user = next((user for user in users.values() if user['name'] == target_name), None)
        if not target_user:
            bot.SendTo(member, f"找不到名为{target_name}的群员。")
        else:
            target_user['blacklisted'] = False
            bot.SendTo(member, f"{target_name}已经被解除黑名单。")

@qqbotslot
def on_transfer_points(bot, contact, member, content):
    # 解析指令参数
    _, target_name, points_str = content.split()
    points = int(points_str)

    # 获取群员信息
    source_user = users.get(member.qq)
    target_user = next((user for user in users.values() if user['name'] == target_name), None)

    # 判断是否有足够的积分进行转账
    if not source_user or source_user['points'] < points:
        bot.SendTo(contact, "你自己都没有还转给别人?")
    elif not target_user:
        bot.SendTo(contact, f"找不到名为{target_name}的群员。")
    else:
        # 执行转账操作
        source_user['points'] -= points
        target_user['points'] += points

        bot.SendTo(contact, f"转送成功!你滴马内转给{target_name}辣!")

@qqbotslot
def on_handle_message(bot, message):
    content = message.content

    # 判断是否为群员骂人
    if any(word in content for word in ['滚', '爬', '爪巴', '逼', '痹', '艹', '操', '囸', '日']):
# 获取群员信息并扣除积分
user = users.get(message.sendUin)
if user:
user['points'] = max(0, user['points'] - 10)

        bot.SendTo(message.fromUin, "禁止骂人!已经扣了10马内了。")
if name == 'main':
bot = RunBot()
bot.Login(['-q', '1124866658'])  # 填写你的QQ号码
bot.Run()

望采纳:

from qqbot import QQBotSlot as qqbotslot, RunBot
 
# 管理员QQ号
admin_qq = '1124866658'
 
# 初始化群员信息字典
users = {}
 
# 定义积分系统相关指令
@qqbotslot
def on_sign_in(bot, contact, member, content):
    # 获取群员信息
    user = users.get(member.qq)
 
    # 判断是否已经签到过
    if user and user.get('signed_in'):
        bot.SendTo(contact, f"{member.name}, 你已经签到过啦!")
    else:
        # 更新积分并标记已签到
        if not user:
            user = {'name': member.name, 'qq': member.qq, 'points': 114, 'blacklisted': False}
            users[member.qq] = user
        else:
            user['points'] += 25
        user['signed_in'] = True
 
        bot.SendTo(contact, f"{member.name}, 恭喜你签到成功!获得25积分。")
 
@qqbotslot
def on_show_points(bot, contact, member, content):
    # 获取群员信息
    user = users.get(member.qq)
 
    if not user:
        bot.SendTo(contact, f"{member.name}, 你还没有积分哦。")
    else:
        bot.SendTo(contact, f"{member.name}, 你当前的积分是:{user['points']}。")
 
@qqbotslot
def on_show_leaderboard(bot, contact, member, content):
    # 对用户列表按照积分从高到低排序
    sorted_users = sorted(users.values(), key=lambda u: u['points'], reverse=True)[:10]
 
    # 构造榜单消息
    message = "积分榜单:\n"
    for i, user in enumerate(sorted_users):
        message += f"{i+1}. {user['name']} ({user['points']} 分)\n"
 
    bot.SendTo(contact, message)
 
# 定义黑名单相关指令
@qqbotslot
def on_handle_message(bot, contact, member, content):
    # 判断是否为管理员发送的消息
    if member.qq != admin_qq:
        return
 
    if content.startswith('查询黑名单'):
        blacklisted_users = [user['name'] for user in users.values() if user.get('blacklisted')]
        if blacklisted_users:
            bot.SendTo(member, f"当前在黑名单中的群员有:{','.join(blacklisted_users)}。")
        else:
            bot.SendTo(member, "没有人在黑名单中。")
 
    elif content.startswith('解除'):
        _, target_name, _ = content.split()
        target_user = next((user for user in users.values() if user['name'] == target_name), None)
        if not target_user:
            bot.SendTo(member, f"找不到名为{target_name}的群员。")
        else:
            target_user['blacklisted'] = False
            bot.SendTo(member, f"{target_name}已经被解除黑名单。")
 
@qqbotslot
def on_transfer_points(bot, contact, member, content):
    # 解析指令参数
    _, target_name, points_str = content.split()
    points = int(points_str)

    # 获取群员信息
    source_user = users.get(member.qq)
    target_user = next((user for user in users.values() if user['name'] == target_name), None)

    # 判断是否有足够的积分进行转账
    if not source_user or source_user['points'] < points:
        bot.SendTo(contact, "你自己都没有还转给别人?")
    elif not target_user:
        bot.SendTo(contact, f"找不到名为{target_name}的群员。")
    elif source_user == target_user:
        bot.SendTo(contact, "不能转账给自己!")
    else:
        # 执行转账操作
        source_user['points'] -= points
        target_user['points'] += points

        bot.SendTo(contact, f"转送成功!你滴马内转给{target_name}辣!")



定义了两个名为on_handle_message的函数,第二个会覆盖第一个,导致第一个函数无法被调用。应该将第二个函数重命名为其他名字