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

Discord工单系统无法向管理员频道发送通知问题求助

Discord工单系统无法推送通知到管理员频道的解决方案

问题分析

调用bot.get_channel(1275428501016547338)返回None,无法找到管理员频道,核心原因可能是频道ID错误、Bot权限不足、获取频道的方式不合适,或者Intents配置问题。

解决步骤

1. 确认频道ID的正确性

  • bot.get_channel()必须传入整数类型的频道ID,字符串ID会直接返回None,你之前尝试传入字符串的做法是错误的,要确保传入的是纯数字整数。
  • 重新复制目标管理员频道的ID:开启Discord开发者模式后,右键频道→复制ID,确保没有多余字符。

2. 改用当前服务器对象获取频道

使用工单创建时的interaction.guild对象来获取频道,比全局的bot.get_channel()更可靠(避免Bot跨服务器查找的问题):

# 替换回调中的admin_msg_channel获取代码
admin_channel_id = 1275428501016547338
admin_msg_channel = guild.get_channel(admin_channel_id)

3. 检查Bot的频道权限

  • 确保Bot在目标管理员频道中拥有查看频道和发送消息的权限。
  • 检查服务器角色设置:Bot的角色是否被允许访问该频道,没有被设置拒绝查看频道的权限。
  • 确认Bot确实加入了该服务器,没有被踢出。

4. 验证Intents配置

  • 虽然代码中使用了discord.Intents.all(),但需要登录Discord开发者后台,找到你的Bot应用,在「Privileged Gateway Intents」下开启Server Members Intent和Message Content Intent,保存后重启Bot。

5. 修复工单编号的管理问题(额外优化)

当前代码中直接修改导入的ticket_number变量不会生效,因为模块级变量的修改只在当前作用域有效,建议改为函数式管理:

# ticket_number.py
_ticket_counter = 0

def get_next_ticket_number():
    global _ticket_counter
    _ticket_counter += 1
    return _ticket_counter

在回调中使用:

from ticket_number import get_next_ticket_number
ticket_number = get_next_ticket_number()

测试验证

修改完成后重启Bot,创建工单时检查控制台是否还输出None,如果频道对象正常获取,就能成功推送通知到管理员频道。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:17:05