【问题标题】:Why my discord bot goes offline when running a loop为什么我的不和谐机器人在运行循环时会脱机
【发布时间】:2021-07-19 01:09:17
【问题描述】:

您好,我的 Discord 机器人有问题。我是 python 新手,对创建自己的机器人也很陌生,但我找不到问题的答案。我正在运行一个不和谐的机器人来检查特定网站上的库存可用性。当我使用“While true: ... time.sleep(60)”循环刷新并从网站下载数据时,我的机器人只会在不和谐的服务器上离线显示。我尝试将计时器更改为更长的时间,并尝试打印并将一些消息发送给不和谐。我发现即使机器人处于离线状态,它也可以发送消息和所有内容。没有错误或任何警告一切正常,但机器人离线。如果有人可以帮助我解决我的问题或听说过它。我会很感激的。如果有人有时间帮助我,我可以分享代码。

代码:

while True:
        Zoznam.clear()
        hodnoty = nacitaniehodnot()
        produkt = hodnoty[0]
        obrazok = hodnoty[1]
        pocetpoloziek = hodnoty[2]

        shopy = ''
        cennik = ''
        for i in Zoznam:
            shopy = shopy+i[0]+'\n'
            cennik = cennik+i[1]+'\n'

        embed = discord.Embed(title =produkt,color= 0x008FFF)
        embed.set_thumbnail(url=obrazok)
        embed.set_author(name='Heureka', url=url,icon_url="https://i1.wp.com/blog.heureka.sk/wp-content/uploads/2019/12/cropped-lupa_heureka_rgb-01.png?fit=512%2C512&ssl=1&w=640")
        embed.add_field(name="Obchod", value=shopy, inline=True)
        embed.add_field(name="Cena", value=cennik, inline=True)
        #embed.add_field(name="Doprava", value=doprava, inline=True)
        global sprava
        if pocetpoloziek != y and sprava is not None:
            await sprava.delete()
            sprava = await channel.send(embed=embed) 
            i=y
        elif not sprava:
            sprava = await channel.send(embed=embed)
        time.sleep(30)

【问题讨论】:

  • 提问方式请参考How to ask a question in Stack Overflow。对于您的问题,我认为它可能来自您的time.sleep,因为 discord.py 是异步的。所以你会有一部分回复here。以正确的方式做一个循环,有一个解释here
  • 你能否提供一段代码来很好地理解问题
  • 我在一个问题中添加了一段代码

标签: discord discord.py


【解决方案1】:

问题可能是由于time.sleep 造成的,因为time.sleep 不是异步的,并且会在休眠期间阻塞所有命令。

尝试导入 asyncio import asyncio 并改用 await asyncio.sleep(30),因为它不会阻止其他命令在睡眠期间运行。

【讨论】:

    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 2018-10-08
    • 2017-10-18
    • 2021-09-24
    • 2021-07-31
    • 2019-09-09
    • 2022-01-09
    • 2019-10-03
    相关资源
    最近更新 更多