使用 FOR 时我的所有函数都崩溃了 - python [closed]

All my functions crash when using FOR - python [closed]

提问人:Hyalec 提问时间:11/15/2023 最后编辑:tripleeeHyalec 更新时间:11/15/2023 访问量:95

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将有助于其他人回答这个问题。

8天前关闭。

首先,如果我的英语错了,我深表歉意!我正在使用谷歌翻译。

我正在使用 AIOGRAM 库在 Telegram 上制作一个机器人。

@dp.callback_query_handler()
async def button(callback_query: types.CallbackQuery) -> None: #BOTOES

在异步 def 按钮内,我需要调用该函数:

retorno_checker = await testar_infocc_async(Numero_CC_Comprando,MES_cc,ANO_cc,CVV_cc)

“retorno_checker”只会返回 LIVE 或 DIE

async def testar_infocc_async(Numero_CC_Comprando, MES_cc, ANO_cc, CVV_cc, Id_Telegram):
    banco = sqlite3.connect(Diretorio_SQLITE_Principal, check_same_thread=False)
    cursor = banco.cursor()
    MAX_TENTATIVAS = 2
    numeros_die = []

    retorno_checker = await testando_infocc(Numero_CC_Comprando, MES_cc, ANO_cc, CVV_cc)

    if retorno_checker == "LIVE":
        print("LIVE")
        retornodef = "LIVE"
        return retornodef
    if retorno_checker == "DIE":
        print("DIE 1")
        BIN = str(Numero_CC_Comprando)[:6]
        CC_Estoque = [x[0] for x in cursor.execute(f" SELECT * FROM BASE_CC WHERE instr(NUMERO, '{BIN}') > 0")]
        if CC_Estoque == []:
            print("Sem estoque")
            retornodef = "DIE"
            return retornodef 
        else: 
            MAX_TENTATIVAS = 15
            encontrou_live = False
            numeros_die = []
            tentativas_das_die = 0
            for _ in range(MAX_TENTATIVAS):

它进入 def teste_infocc_async在“testando_infocc”中执行测试,返回 LIVE 或 DIE

如果它第一次返回 LIVE,它会在按钮功能 LIVE 中提供它 如果第一次 DIE 返回,它将尝试在几个不同的数字中找到 1,最多 15 个数字。

现在问题开始了!“FOR”将搜索多次,直到找到 1 个 LIVE

在执行 FOR 时,其余代码不起作用!我的 Telegram 机器人上的 /start 命令停止响应,直到 for 结束。

@dp.message_handler()
async  def Mensagens_qualquer(message: types.Message) -> None:
    if message.text.find("/start")!= -1:

只要我运行它,我就需要代码继续工作

编辑代码:

async def testar_infocc_async(Numero_CC_Comprando, MES_cc, ANO_cc, CVV_cc, Id_Telegram):
    banco = sqlite3.connect(Diretorio_SQLITE_Principal, check_same_thread=False)
    cursor = banco.cursor()
    MAX_TENTATIVAS = 2
    numeros_die = []

    retorno_checker = await testando_infocc(Numero_CC_Comprando, MES_cc, ANO_cc, CVV_cc)

    if retorno_checker == "LIVE":
        print("LIVE")
        retornodef = "LIVE"
        return retornodef
    if retorno_checker == "DIE":
        print("DIE 1")
        BIN = str(Numero_CC_Comprando)[:6]
        CC_Estoque = [x[0] for x in cursor.execute(f" SELECT * FROM BASE_CC WHERE instr(NUMERO, '{BIN}') > 0")]
        if CC_Estoque == []:
            print("Sem estoque")
            retornodef = "DIE"
            return retornodef 
        else: 
            MAX_TENTATIVAS = 15
            encontrou_live = False
            numeros_die = []
            tentativas_das_die = 0
            for _ in range(MAX_TENTATIVAS):
                print("TENTANDO!")
                cursor.execute(f"SELECT * FROM BASE_CC WHERE instr(NUMERO, '{BIN}') > 0 ORDER BY RANDOM() LIMIT 1")
                Resultado = cursor.fetchone()   
                print(Resultado)                     
                if Resultado is not None:
                    Numero = Resultado[0]
                    Numero_Dividido = re.findall(".", str(Numero))
                    Numero_apenas_Bin = f"{Numero_Dividido[0]}{Numero_Dividido[1]}{Numero_Dividido[2]}{Numero_Dividido[3]}{Numero_Dividido[4]}{Numero_Dividido[5]}*****"
                    Mes = Resultado[1]
                    Ano = Resultado[2]
                    Cvv = Resultado[3]
                    Bandeira = Resultado[4]
                    Tipo = Resultado[5]
                    Nivel = Resultado[6]
                    Banco = Resultado[7]
                    Pais = Resultado[8]
                    TIPO_CC = Resultado[14]
                    cursor.execute(f"UPDATE Usuarios SET Numero_CC_Comprando = '{Numero}' WHERE ID_Telegram = '{Id_Telegram}'")
                    banco.commit()   
                    retorno_checker = await testando_infocc(Numero,Mes,Ano,Cvv)
                    print("RETORNO 2 ", retorno_checker)
                    if retorno_checker == "LIVE":
                        print("LIVE 2")
                        retornodef = "LIVE"
                        return retornodef
                    elif retorno_checker == "DIE":
                        tentativas_das_die += 1  # Incrementa a contagem
                        print("DIE, TENTANDO NOVAMENTE N:", tentativas_das_die)
                        cursor.execute(f"INSERT INTO CCs_Die (NUMERO,MES,ANO,CVV,BANDEIRA,NIVEL,BANCO,PAIS,NOME,CPF,Data_MS_Inserido,ID_Telegram_Quando_Die,DADOS_REAIS) VALUES ('{Numero}','{Mes}','{Ano}','{Cvv}','{Bandeira}','{Nivel}','{Banco}','{Pais}','0','0','{round(time.time() * 1000)}','{Id_Telegram}','0')")
                        cursor.execute(f"DELETE FROM BASE_CC WHERE NUMERO = {Numero}")
                        banco.commit()                                    
                        cursor.execute(f"UPDATE Usuarios SET StatusConversa = '0' WHERE ID_Telegram = '{Id_Telegram}'")
                        banco.commit()                                    
                        Gerenciadores = [x[0] for x in cursor.execute(f"SELECT ID_Telegram FROM GERENCIADORES")]
                        numeros_die.append(f"{Numero}|{Mes}|{Ano}|{Cvv}")
                        continue
                else:
                    retornodef = "DIE"
                    return retornodef
python aiogram

评论

0赞 quamrana 11/15/2023
循环里面有什么?for
0赞 Hyalec 11/15/2023
在 for 循环中,它将查找一个不同的数字并再次将其发送到: retorno_checker = await testando_infocc(Numero,Mes,Ano,Cvv) 直到找到 1 个答案 LIVE
2赞 tripleee 11/15/2023
请不要破坏您的帖子。通过在 Stack Exchange 网络上发帖,您已授予 SE 分发该内容的不可撤销权利(根据 CC BY-SA 4.0 许可)。根据 SE 政策,任何破坏行为都将被恢复。如果您想删除您的帖子,“删除”链接就在您用来破坏此页面的“编辑”链接旁边。

答: 暂无答案