Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.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.Client并在循环中作为任务运行?_Python_Asynchronous_Discord_Discord.py_Python Asyncio - Fatal编程技术网

Python 如何在类中正确创建discord.Client并在循环中作为任务运行?

Python 如何在类中正确创建discord.Client并在循环中作为任务运行?,python,asynchronous,discord,discord.py,python-asyncio,Python,Asynchronous,Discord,Discord.py,Python Asyncio,我正在使用Discord.py,我需要使Discord.Client在我自己的循环中运行,因为我希望它可以运行多次(对于更多的机器人,我不需要制作越来越多的文件,以便它们同时运行) 这是我能举的最简单的例子: 导入不一致 导入异步 从discord.ext导入命令 token=“token” 类客户端(discord.Client): @commands.Cog.listener() _ready()上的异步定义: 打印(self.user.id) @commands.command() 异步d

我正在使用Discord.py,我需要使Discord.Client在我自己的循环中运行,因为我希望它可以运行多次(对于更多的机器人,我不需要制作越来越多的文件,以便它们同时运行)

这是我能举的最简单的例子:

导入不一致
导入异步
从discord.ext导入命令
token=“token”
类客户端(discord.Client):
@commands.Cog.listener()
_ready()上的异步定义:
打印(self.user.id)
@commands.command()
异步def测试(ctx):
等待ctx发送(“你好”)
loop=asyncio.get\u event\u loop()
客户机=客户机(命令前缀=“!”)
loop.create_任务(client.start(令牌))
loop.run_,直到_完成

它根本不返回任何东西;它只是自动关闭。我知道我有错误,但我不知道是哪一个,为什么。如何修复它们?

首先,您混合了discord.Client和commands.Bot/commands.Cog

类客户端(discord.Client):
应该是

类客户端(commands.Cog):
而且,试图通过循环运行多个机器人是行不通的。我强烈建议您只制作多个文件

此外,它应该是:

def设置(客户端):
客户。添加_cog(客户(客户))
如果要使其成为cog,则必须将其加载到另一个文件中

如果您只需要一个单一的文件,那么它应该如下所示:

类客户端(commands.Bot):
@机器人事件
_ready()上的异步定义:
打印(self.user.id)
@bot.command()
异步def测试(ctx):
等待ctx发送(“你好”)
客户机=客户机(命令前缀=“!”)
client.run(令牌)

命令不使用事件装饰器,您需要将命令置于bot定义之外