微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

discord.py-多消息发布-RuntimeError:事件循环已关闭

如何解决discord.py-多消息发布-RuntimeError:事件循环已关闭

我想创建一个discord机器人,该机器人将我在控制台中输入的消息或与另一段代码(例如传感器数据)一起生成的消息发送到通道。 我尝试了以下操作,但是在输入第二条消息后,我收到RuntimeError:事件循环已关闭。有什么建议吗?

import discord


def send_message(message):
    token = "mydiscordbottoken"
    channel_id = channelid
    bot = discord.Client()

    @bot.event
    async def on_ready():
        await bot.get_channel(channel_id).send(message)
        await bot.close()

    bot.run(token)


while True:
    mes = input('Enter message: ')
    send_message(mes)

我想在打印消息后回到while循环外功能。 运行代码时,出现以下错误

Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x00000206ABBDC940>
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\proactor_events.py",line 116,in __del__
    self.close()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\proactor_events.py",line 108,in close
    self._loop.call_soon(self._call_connection_lost,None)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py",line 719,in call_soon
    self._check_closed()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py",line 508,in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x00000206ABBDC940>
Traceback (most recent call last):
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\proactor_events.py",in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
Traceback (most recent call last):
  File "C:/Users/janik/PycharmProjects/learnpython/main.py",line 19,in <module>
    send_message(mes)
  File "C:/Users/janik/PycharmProjects/learnpython/main.py",line 14,in send_message
    bot.run(token)
  File "C:\Users\janik\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\python38\site-packages\discord\client.py",line 695,in run
    future = asyncio.ensure_future(runner(),loop=loop)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\tasks.py",line 669,in ensure_future
    task = loop.create_task(coro_or_future)
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py",line 429,in create_task
    self._check_closed()
  File "C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.8_3.8.1776.0_x64__qbz5n2kfra8p0\lib\asyncio\base_events.py",in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed
sys:1: RuntimeWarning: coroutine 'Client.run.<locals>.runner' was never awaited

我对asycio和discord.py有点陌生,只想将多条消息打印到我的discord服务器上。 预先谢谢你!

解决方法

您尚未完全正确地设置代码,因为//... private readonly IGitHubService gitHubService; public TypedClientModel(IGitHubService gitHubService) { this.gitHubService = gitHubService; } public async Task OnGet() { try { LatestIssues = await gitHubService.GetAspNetDocsIssues(); } //... 将冻结代码。这是我建议您这样做的方式。

input()

这使您可以执行命令import discord from discord.ext import commands client = commands.Bot(command_prefix = "PREFIX") @client.command() async def sendMessage(ctx,channel: discord.TextChannel,*,message): await channel.send(message) client.run("TOKEN") 。由于您是新手,因此我还将在命令参数中说明(PREFIX)sendMessage (#CHANNEL) (MESSAGE)的用法。 *允许我们的消息长为多个单词,以便消息中包含频道之后的所有内容。

如果您有任何其他问题,请随时在StackOverflow或Discord上通过starmoan#4269与我联系!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。