Discord.py ';非类型';对象没有属性';发送';-不和谐机器人
当我通过DM向discord bot发送命令“!say”时,我试图让它向服务器中的某个通道发送消息 我尝试了很多不同的代码,但通常,它最终会出现属性错误“X对象没有属性Y”Discord.py ';非类型';对象没有属性';发送';-不和谐机器人,discord.py,Discord.py,当我通过DM向discord bot发送命令“!say”时,我试图让它向服务器中的某个通道发送消息 我尝试了很多不同的代码,但通常,它最终会出现属性错误“X对象没有属性Y” 当我对bot进行DM时,错误消息总是出现,希望它发送所需的消息。您的代码片段有一个非常简单的问题,需要先更正,然后才能执行您试图让它执行的操作 首先,看一下for客户端。获取频道(您正在呼叫该频道): 因此,当您这样做时:channel=bot.get_channel('584307345065246725'),您传递的参数
当我对bot进行DM时,错误消息总是出现,希望它发送所需的消息。您的代码片段有一个非常简单的问题,需要先更正,然后才能执行您试图让它执行的操作 首先,看一下for
客户端。获取频道(您正在呼叫该频道):
因此,当您这样做时:channel=bot.get_channel('584307345065246725')
,您传递的参数不正确。根据API,唯一的参数必须是int,但传递的是字符串。只要去掉单引号就可以了
Protip:在“返回”下,API声明,如果找不到频道,它可以返回None
,这就是发生在您身上的情况,因为您正在传递字符串。因此,channel
成为您在错误中看到的NoneType
对象。所以当你做频道时,发送。。。你明白了。你的代码片段中有一件非常简单的事情,在它完成你试图让它完成的事情之前,需要对它进行更正
首先,看一下for客户端。获取频道(您正在呼叫该频道):
因此,当您这样做时:channel=bot.get_channel('584307345065246725')
,您传递的参数不正确。根据API,唯一的参数必须是int,但传递的是字符串。只要去掉单引号就可以了
Protip:在“返回”下,API声明,如果找不到频道,它可以返回None
,这就是发生在您身上的情况,因为您正在传递字符串。因此,channel
成为您在错误中看到的NoneType
对象。所以当你做频道时,发送。。。您可以看到图片。频道id是一个int,而不是一个字符串
@bot.command()
异步定义(ctx):
频道=机器人获取频道(584307345065246725)
等待频道发送(ctx)
我不太明白的是为什么你不能这么做:
来自discord.ext导入命令
bot=commands.bot(命令前缀='!')
@命令(pass\u context=True)
异步定义(ctx):
等待ctx发送(ctx)
但是我可能误解了您试图执行的操作。频道id是int,而不是字符串
@bot.command()
异步定义(ctx):
频道=机器人获取频道(584307345065246725)
等待频道发送(ctx)
我不太明白的是为什么你不能这么做:
来自discord.ext导入命令
bot=commands.bot(命令前缀='!')
@命令(pass\u context=True)
异步定义(ctx):
等待ctx发送(ctx)
但是我可能误解了您的意图。您传递给get\u频道的id应该是int,而不是字符串。另外,ctx
将是一个调用上下文对象,它不作为消息的内容。您到底想发送什么?传递给get\u channel
的id应该是int,而不是字符串。另外,ctx
将是一个调用上下文对象,它不作为消息的内容。你到底想送什么?
from discord.ext import commands
bot = commands.Bot(command_prefix='!')
@bot.command()
async def say(ctx):
channel = bot.get_channel('584307345065246725')
await channel.send(ctx)
get_channel(id)
Returns a channel with the given ID.
Parameters
id (int) – The ID to search for.
Returns
The returned channel or None if not found.
Return type
Optional[Union[abc.GuildChannel, abc.PrivateChannel]]