【问题标题】:discordpy, bot crashs after simulate a lotterydiscord py,机器人在模拟彩票后崩溃
【发布时间】:2021-01-28 06:20:22
【问题描述】:

我将这个模拟作为一个不和谐的 cog,但是机器人离线并且控制台是打开的,如果我写或退出它就不会做任何事情...... 金额为 15000 时,机器人崩溃了,我该怎么办,为什么会崩溃? 有不和谐的表情符号,随机选择,数字等有不同的机会。我希望有人可以在这里帮助我!

    @bot.command()
    async def simulate(self, ctx, amount):
        wnitro = 0
        wkey = 0
        wgold = 0
        wred = 0
        wblue = 0
        wgreen = 0
        wgrey = 0
        for zaehler in range(1, int(amount)):
            drehungen = randint(5, 20)
            gone = randint(1, 1000)
            gtwo = randint(1, 1000)
            gthree = randint(1, 1000)
            gfour = randint(1, 1000)
            gfive = randint(1, 1000)
            gsix = randint(1, 1000)
            gseven = randint(1, 1000)
            geight = randint(1, 1000)
            gnine = randint(1, 1000)
            randomitem = [gone, gtwo, gthree, gfour, gfive, gsix, gseven, geight, gnine]
            slots = []
            for item in range(len(randomitem)):
                if randomitem[item] >= 950:
                    slots.append("<a:classic:802844186026049546>")
                elif randomitem[item] >= 850:
                    slots.append("<a:geld:770235576539676682>")
                elif randomitem[item] >= 800:
                    slots.append("<a:goldendia:802976550995755019>")
                elif randomitem[item] >= 650:
                    slots.append("<a:darkbluedia:802976435500875836>")
                elif randomitem[item] >= 500:
                    slots.append("<a:reddia:802873281841463296>")
                elif randomitem[item] >= 300:
                    slots.append("<a:greendia:802875898353156138>")
                else:
                    slots.append("<a:greydia:802977070627553311>")
            cdrehung = 1
            nitroextra = randint(1, 100)
            keyextra = randint(1, 10)
            coinsextra = randint(1, 5)
            coins2extra = randint(1, 2)
            i = 0
            while i < drehungen:
                if cdrehung == 0:
                    gewinn = slots[4]
                elif cdrehung == 1:
                    gewinn = slots[5]
                elif cdrehung == 2:
                    gewinn = slots[6]
                elif cdrehung == 3:
                    gewinn = slots[7]
                elif cdrehung == 4:
                    gewinn = slots[8]
                elif cdrehung == 5:
                    gewinn = slots[0]
                elif cdrehung == 6:
                    gewinn = slots[1]
                elif cdrehung == 7:
                    gewinn = slots[2]
                elif cdrehung == 8:
                    gewinn = slots[3]
                    cdrehung -= 9
                cdrehung += 1
                i += 1
                if i == drehungen:
                    if gewinn == "<a:classic:802844186026049546>":
                        if nitroextra == 1:
                            wnitro += 1
                        else:
                            drehungen += 1
                    elif gewinn == "<a:geld:770235576539676682>":
                        if keyextra == 1:
                            wkey += 1
                        else:
                            drehungen += 1
                    elif gewinn == "<a:goldendia:802976550995755019>":
                        if coinsextra == 1:
                            wgold += 1
                        else:
                            drehungen += 1
                    elif gewinn == "<a:darkbluedia:802976435500875836>":
                        if coins2extra == 1:
                            wblue += 1
                        else:
                            drehungen += 1
                    elif gewinn == "<a:reddia:802873281841463296>":
                        wred += 1
                    elif gewinn == "<a:greendia:802875898353156138>":
                        wgreen += 1
                    elif gewinn == "<a:greydia:802977070627553311>":
                        wgrey += 1
        await ctx.send(f"There are the results out of `{str(amount)}x` spins: {str(wnitro)}x Nitro, {str(wkey)} Key, {str(wgold)} <a:goldendia:802976550995755019>, {str(wblue)} <a:darkbluedia:802976435500875836>, {str(wred)} <a:reddia:802873281841463296>, {str(wgreen)}<a:greendia:802875898353156138>, {str(wgrey)}<a:greydia:802977070627553311>")

感谢所有帮助c的人:

【问题讨论】:

  • 您遇到错误了吗?
  • 不,这就是问题所在,我没有收到任何错误,控制台已死或类似...
  • 但是脚本结束了吗?还是还在运行?
  • 当我查看不和谐时,机器人是离线的,所以离线,但如果我查看控制台,我无法用 STRG + C 停止它,所以我不得不关闭屏幕:screen -X -S "mybot" quit

标签: python discord.py


【解决方案1】:

更新:我收回它,理论上你的插槽可能都是同一件事,或者是导致 drehungen 始终实现的事物的组合。您确实需要重新考虑循环中的逻辑。

更新:实际上这是错误的,您确实更新了cdrehung,它更新了gewinn...这非常令人费解,但它似乎应该在某个时候结束。话虽如此,这个循环有点复杂,我会考虑为所有这些不同的变量提供一些调试消息,以弄清楚发生了什么。

看看它,在你的 while 循环中,gewinn 的状态没有改变,或者任何其他项目 (wnitro wkey wgold wblue) 都没有改变......如果是这样的话,它可能 em> 表示drehungen 始终在递增...这意味着i == drehungen 始终为真...这意味着无限循环。

【讨论】:

  • 感谢您的回复,我已经测试过,变量“i”会在某一点越来越高,我不知道为什么,会产生更多变量!
  • 这就是你的代码,你总是递增 i。这是你需要弄清楚的 drehung。
  • 是的,谢谢,现在将处理它,看看我如何解决它,感谢您的帮助!编辑:我已经解决了!
猜你喜欢
  • 2023-02-10
  • 1970-01-01
  • 2021-10-12
  • 2021-02-20
  • 2021-05-27
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 2021-01-11
相关资源
最近更新 更多