商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > 合法使用 discord.py 修改用户状态的方法

合法使用 discord.py 修改用户状态的方法

  发布于2026-04-19 阅读(0)

扫一扫,手机访问

如何合法使用 discord.py 修改 Discord 用户状态?

Discord 官方明确禁止通过自建机器人(self-bot)操控个人账号状态,违反服务条款可能导致封禁;本文详解合规替代方案——利用 Rich Presence 实现有限自动化,并指出技术限制与风险。

Discord 官方明确禁止通过自建机器人(self-bot)操控个人账号状态,违反服务条款可能导致封禁;本文详解合规替代方案——利用 Rich Presence 实现有限自动化,并指出技术限制与风险。

Discord 的服务条款(ToS)严格禁止任何形式的用户账号自动化操作,包括使用 discord.py 创建 self-bot 来修改个人状态(如设为离线、隐身或自定义在线状态)。尽管你使用的 discord.py v1.7.0 仍支持 self_bot=True,但该功能已在 v2.0+ 中被彻底移除,正是出于合规性与平台安全考量。你的代码虽无语法错误,却无法生效——因为 Discord 服务端会主动拦截并拒绝来自非官方客户端的 presence 变更请求,即使 token 有效。

⚠️ 关键事实提醒

  • bot.change_presence() 在 self-bot 场景下已被 Discord 后端静默忽略(不报错,但无效);
  • intents.presences=False 已正确设置(因 self-bot 本就不需要监听他人状态),但此配置不影响「发送自身状态」的权限缺失问题;
  • goInvis 函数存在逻辑错误:if goInvis: 实际检查的是函数对象是否为真(恒为 True),而非调用结果;且 time 变量名与 import time as t 冲突,导致 time < time_stamps[0] 报 NameError(未定义 time)。

合规替代方案:Rich Presence(富状态)
唯一被 Discord 官方允许的、由第三方程序驱动的状态变更方式是 Rich Presence——它需通过 Discord RPC(Remote Procedure Call)协议实现,适用于桌面应用(如游戏、IDE、音乐播放器等),并需在 Discord Developer Portal 中创建应用并启用 RPC 权限。

示例(使用 pypresence 库):

from pypresence import Presence
import time
import datetime

client_id = "your_app_client_id"  # 替换为 Discord 开发者后台获取的 ID
RPC = Presence(client_id)
RPC.connect()

def update_presence():
    now = datetime.datetime.now().time()
    is_off_hours = now.hour < 12 or now.hour > 22
    state_text = "? Off-hours (Invisible)" if is_off_hours else "? Working"

    RPC.update(
        state=state_text,
        large_image="logo",  # 需提前上传到应用资源库
        small_image="online" if not is_off_hours else "offline",
        start=int(time.time())
    )

# 每 60 秒更新一次(避免频繁调用)
while True:
    update_presence()
    time.sleep(60)

? 注意事项

  • Rich Presence 不会真正隐藏你的在线状态(即好友仍可见你“在线”),仅显示自定义文字、图标和活动卡片;
  • 必须使用独立的 Discord 应用 ID,不可复用 bot token;
  • 用户需手动授权该应用(首次运行时弹出 Discord 授权窗口);
  • 不适用于纯后台脚本——需保持 Python 进程常驻,且依赖本地 Discord 桌面客户端(RPC 通信需 Discord 进程在运行)。

? 总结建议
若目标仅为「按时间自动切换可见性」,最稳妥的方式是:

  1. 使用 Discord 官方客户端的「状态定时设置」(v125+ 版本已支持计划状态);
  2. 或通过操作系统级自动化(如 Windows 任务计划程序 + curl 调用 Discord Web API —— 但注意:Web API 同样禁止此类操作,仅限官方客户端内建功能)。
    请始终优先遵循 Discord Terms of ServiceDeveloper Policy,规避账号风险。
本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注