Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python的discord时,“NoneType”对象没有属性“send”_Python_Discord_Discord.py - Fatal编程技术网

使用python的discord时,“NoneType”对象没有属性“send”

使用python的discord时,“NoneType”对象没有属性“send”,python,discord,discord.py,Python,Discord,Discord.py,我想在没有命令的情况下为discord编写一条bot消息。但是我在运行代码时遇到了一个问题。错误为:“非类型”对象没有“发送”属性 回溯最近的调用上次:文件D:/Development/Code Python/Bot Discord/Discord-testbot.py,第18行,在my_background_任务中 等待频道。发送频道,“新建” AttributeError:“非类型”对象没有属性“发送” 进口不和 client=discord.client @客户端事件 _就绪时的异步定义:

我想在没有命令的情况下为discord编写一条bot消息。但是我在运行代码时遇到了一个问题。错误为:“非类型”对象没有“发送”属性

回溯最近的调用上次:文件D:/Development/Code Python/Bot Discord/Discord-testbot.py,第18行,在my_background_任务中 等待频道。发送频道,“新建” AttributeError:“非类型”对象没有属性“发送”

进口不和 client=discord.client @客户端事件 _就绪时的异步定义: 打印“机器人已准备就绪” 异步定义my_后台任务: 等待客户。等待,直到准备就绪 等待频道。发送频道,'Bot say' client.loop.create_task我的_background_任务 client.runtokenBot
如果删除line channel=client.get_channel574514361394266125,则会引发另一个错误,即未定义名称“channel”。

它对我有效。似乎您正在呼叫client.get\u channelid,然后再呼叫您的客户端。请等待\u,直到\u准备好您已发送编辑的代码,因此我无法保证

这段代码对我来说很好:

异步定义背景: 等待客户。等待,直到准备就绪 channel=client.get\u channelintMY\u channel 等待channel.sendTest client.loop.create_taskbackground 正确创建后台任务: 由于discord.pyv1.1版,您可以更轻松、更安全地声明和管理后台任务

这就是我们在cog中的工作方式:

进口不和 从discord.ext导入任务、命令 类OnReady_Messagecommands.Cog: 定义初始自我,客户端: self.client=client self.send\u onready\u message.start def cog_卸载自身: self.send\u onready\u message.close 回来 任务 @tasks.loopcount=1只执行一次 异步def send_onready_messageself: channel=self.client.get\u channelintMY\u channel 等待channel.sendTest @发送\u onready\u消息。在\u之前循环在启动任务之前等待客户端 发送自我之前的异步定义: 等待self.client。等待,直到准备好 回来 @发送\u onready\u消息。完成任务后,循环销毁该任务 _sendself之后的异步定义: self.send\u onready\u message.close 回来 最后,要运行任务send_onready_消息,我们可以创建一个task_runner对象,或者简单地在任务实例中创建

任务运行程序: 这将允许您轻松运行所有任务:

导入任务 从cogs.tasks.on_ready_任务导入OnReady_消息 类任务运行程序: 定义初始自我,客户端 self.client=client def运行任务自身: OnReady_Messageself.client 回来 在主文件中:

进口不和 从discord.ext导入命令 从cogs.tasks.task\u runner导入任务\u runner client=commands.Botcommand\u prefix=prefix runner=任务\u runnerclient runner.run\u任务 client.runtoken 没有任务运行程序: 没有Task_runner,我们有:

进口不和 从discord.ext导入命令 从cogs.tasks.on_ready_任务导入OnReady_消息 client=commands.Botcommand\u prefix=prefix OnReady_消息客户端 client.runTOKEN 正在更新discord.py: 上述示例仅在discord.py版本为最新版本时有效

要知道是否是,您可以在终端中运行:

pip install discord.py --upgrade
>>>进口不和 >>>不和谐__ '1.2.3' 如果您的版本较旧,可以在终端中使用以下命令进行更新:

pip install discord.py --upgrade
希望有帮助

免责声明:我今天才发现这个问题。我知道它已经解决了,但我想我可能会留下我的答案供将来使用或其他用户使用

在我的情况下,这是一个仅用于发送直接消息的解决方案:

# DM message
@client.command(aliases=["dm"])
@commands.has_permissions(administrator=True)
async def _dm_(ctx, content, user_id):
    # Variables
    user = client.get_user(int(user_id))
    msg = "Sending to DM!"

    # Process
    await ctx.send(msg)
    print(msg)
    await user.send(content)

在本例中,我的问题最初是通过discord将user_id作为字符串填充。现在,它将其作为字符串接收,然后将ID转换为整数。

我在5秒钟内修复了它,非常感谢。仅呼叫客户端。在客户端之后获取\u channelid。等待\u,直到\u准备就绪。非常感谢谢谢!我只需要在get_频道调用中用int包装我的频道id