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

Dart开发Discord机器人遇Nyxx未定义错误(已导入库)

解决Nyxx库中'Nyxx'未定义的问题

问题根源

你使用的是Nyxx 5.x版本,该版本已移除旧版的Nyxx类,改用NyxxGateway(用于接收网关事件的完整机器人客户端)或NyxxRest(仅调用Discord REST API的客户端)。同时你的pubspec.yaml指定的SDK版本不满足Nyxx 5.x的要求,进一步引发兼容性问题。

修正步骤

  1. 更新pubspec.yaml配置
    Nyxx 5.x要求Dart SDK版本至少为3.0.0,调整配置后执行dart pub get更新依赖:
name: test
description: A simple command-line application.

environment:
  sdk: '>=3.0.0 <4.0.0'

dependencies:
  nyxx: ^5.1.1

dev_dependencies:
  pedantic: ^1.11.0
  1. 替换客户端初始化逻辑
    用NyxxGateway替代旧的Nyxx类,同时必须指定机器人所需的intents(Discord要求机器人声明权限事件):
import 'package:nyxx/nyxx.dart';
import 'dart:async';

void main() async {
  // 初始化网关客户端,传入令牌和必要的intents
  final bot = await NyxxGateway.connect(
    Token("你的机器人令牌"),
    GatewayIntents.allUnprivileged, // 根据需求调整intents,这里启用所有非特权权限
  );

  // 实现每日改名的定时任务
  int day = 0;
  // 每24小时执行一次改名操作
  Timer.periodic(const Duration(hours: 24), (timer) {
    day++;
    print("已过去$day天");
    // 修改机器人在指定服务器内的昵称,替换为你的服务器ID
    bot.guilds.get(Snowflake("你的服务器ID"))?.editSelf(nickname: "第$day天");
  });
}

额外说明

你原代码中的Stopwatch逻辑仅会在程序启动时执行一次,无法实现循环检测。使用Timer.periodic可以定时触发任务,满足每日改名的需求。另外,修改服务器内机器人昵称需要机器人拥有对应权限,需将代码中的你的机器人令牌和你的服务器ID替换为实际值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:53:21