You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测两个变量值相等?Discord bot账户系统JSON注册用户匹配实现

Discord Bot 注册用户匹配功能可运行实现代码

核心适配特性

  • 基于异步逻辑设计,不会阻塞Discord Bot的主事件循环,不影响消息接收、指令响应等基础功能
  • 内置可控轮询间隔,避免无间隔高频读取JSON文件造成的磁盘IO浪费
  • 全链路异常捕获,覆盖JSON文件损坏、临时写入中、字段缺失等常见场景,不会因读文件异常导致Bot崩溃
  • 匹配逻辑可灵活调整,适配不同结构的JSON用户存储格式

可直接复用的实现代码

import json
import asyncio
import os

# 基础配置项
JSON_STORE_PATH = "./registered_users.json"  # 已注册用户存储的JSON文件路径
POLL_INTERVAL = 3  # 轮询读取文件的间隔,单位秒
MATCH_KEY_1 = "discord_uid"  # 待匹配的第一个变量对应的JSON键
MATCH_KEY_2 = "platform_bound_uid"  # 待匹配的第二个变量对应的JSON键

async def run_user_match_cycle():
    # 持续循环直到匹配成功
    while True:
        try:
            # 校验文件是否存在,不存在则跳过本轮读取
            if not os.path.exists(JSON_STORE_PATH):
                await asyncio.sleep(POLL_INTERVAL)
            with open(JSON_STORE_PATH, "r", encoding="utf-8") as f:
                registered_user_list = json.load(f)
            
            # 遍历所有注册用户,检测两个变量取值是否相等
            for user in registered_user_list:
                # 匹配判断逻辑:同一用户条目下两个变量取值完全一致
                if user[MATCH_KEY_1] == user[MATCH_KEY_2]:
                    # 匹配成功后可自定义后续逻辑:发送绑定通知、赋予对应权限等
                    print(f"用户匹配完成,匹配到的用户信息:{user}")
                    return user
        except json.JSONDecodeError:
            # 捕获文件临时写入导致的解析错误,跳过本轮
            await asyncio.sleep(POLL_INTERVAL)
            continue
        except KeyError:
            # 捕获字段缺失的异常,跳过无效条目
            continue
        
        # 本轮未匹配到目标,等待间隔后重新读取
        await asyncio.sleep(POLL_INTERVAL)

# 对接Discord Bot的启动流程:在on_ready事件中挂载轮询任务
@bot.event
async def on_ready():
    # 创建独立异步任务运行轮询,不阻塞Bot主流程
    asyncio.create_task(run_user_match_cycle())

自定义调整说明

  • 可根据实际匹配需求修改判断逻辑,比如改为user[MATCH_KEY_1] == 指定固定值 and user[MATCH_KEY_2] == 指定固定值,实现两个变量同时等于指定值的匹配规则
  • 若JSON存储结构为键值对字典(如以Discord ID为外层键的字典格式),只需将遍历部分修改为遍历registered_user_list.values()即可适配
  • 可根据业务对实时性的要求调整轮询间隔,平衡匹配响应速度和系统资源消耗

内容的提问来源于stack exchange,提问作者AidanGamin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 18:36:01