client.get_channel(id) 在存在的频道上返回“none”
Posted
技术标签:
【中文标题】client.get_channel(id) 在存在的频道上返回“none”【英文标题】:client.get_channel(id) returning "none" on a channel that exists 【发布时间】:2021-05-17 17:05:17 【问题描述】:我正在尝试为 Discord 制作一个机器人,每次我尝试使用以下代码向指定频道发送消息时,它不会给我任何错误,但会打印“无”,我当通道不存在时会期望。我现在已经尝试使用多个公会/服务器和多个文本通道,以及运行相同代码的多台计算机。在下面的代码中,我用作为 channelID 的 int 替换了 channelID,用我的令牌(字符串)替换了令牌。
import discord
from discord.ext import commands
intents = discord.Intents.all()
client = commands.Bot(command_prefix = 'bday ', intents = intents)
channel = client.get_channel(channelID)
print(channel)
client.run("token")
机器人确实具有管理员权限,以及两个意图网关
【问题讨论】:
您是否已将机器人邀请到具有给定频道 ID 的频道所在的服务器?如果没有,它不会像任何其他 get_ 函数一样工作。 @langley 是的,我有 【参考方案1】:你需要修改
client.get_channel()
与
client.get_guild(your server's id).get_channel(channel id)
【讨论】:
现在它给了我错误 AttributeError: 'NoneType' object has no attribute 'get_channel',所以它在寻找公会时遇到了同样的问题【参考方案2】:您似乎试图在实际运行您的机器人之前调用机器人的功能。
尝试在on_ready()
回调中添加您的代码,以确保您仅在初始化机器人本身后才尝试获取您的频道。
import discord
from discord.ext import commands
intents = discord.Intents.all()
client = commands.Bot(command_prefix = 'bday ', intents = intents)
@client.event
async def on_ready():
channel = client.get_channel(channelID)
print(channel)
client.run("token")
【讨论】:
非常感谢,终于成功了!我已经为此工作了几个小时,但无济于事。 :) 我已将您的答案标记为已接受以上是关于client.get_channel(id) 在存在的频道上返回“none”的主要内容,如果未能解决你的问题,请参考以下文章