Discord.py 如何通过指令为JSON数据库内所有用户发放货币
批量获取用户对象实现余额发放方案
场景1:用户数据存储在本地JSON文件
- 先读取全量用户数据到内存,批量修改后回写文件即可:
import json # 读取所有用户数据 with open("user_data.json", "r", encoding="utf-8") as f: all_users = json.load(f) # 遍历所有用户ID加100余额 for user_id in all_users: all_users[user_id]["wallet"] += 100 # 保存修改后的数据 with open("user_data.json", "w", encoding="utf-8") as f: json.dump(all_users, f, indent=2, ensure_ascii=False)
场景2:用户数据存储在关系型数据库(SQLite/MySQL通用逻辑)
- 无需先查询全量用户,直接执行SQL更新语句效率更高:
import sqlite3 db_conn = sqlite3.connect("your_database.db") cursor = db_conn.cursor() # 单条语句完成全量用户余额更新 cursor.execute("UPDATE users SET wallet = wallet + 100") db_conn.commit() db_conn.close()
场景3:基于Discord.py等机器人框架的用户缓存
- 直接遍历服务器成员列表操作即可:
# guild为你要发放福利的目标服务器对象 for member in guild.members: # 对接你自己的存储逻辑更新余额 user_wallet = get_user_wallet(member.id) update_user_wallet(member.id, user_wallet + 100)
小提示:如果用户量级超过1万,建议分批分页处理,避免一次性加载全量数据导致内存溢出
内容的提问来源于stack exchange,提问作者RudeusCoder
相关产品推荐
相关产品推荐

