0

我对编程很陌生,但我一直在研究这段代码,终于有所收获。我正在使用 Telethon api 扫描 TG 组,然后对代码执行一些操作。

我的程序有一个主屏幕,在那里我接受输入,然后在返回主屏幕之前循环遍历函数。

第一次运行完美,但是当它回到主屏幕时,发生了 2 件事。

  1. 我得到协程从来没有等待过。
    RuntimeWarning: coroutine 'UpdateMethods._run_until_disconnected' was 
    never awaited
        client.run_until_disconnected()
    RuntimeWarning: coroutine 'AuthMethods._start' was never awaited
      client.start()
  1. 它在没有发生其他事件的情况下开始运行它之后的功能

实际的代码除了打印之外还有更多的功能,但我省略了这些,只是用打印代替,以了解它们在做什么,因为它们正在工作。

任何帮助是极大的赞赏。如果我的代码非常混乱,我提前道歉!

client = TelegramClient('anon', config['telegram_id'], config['telegram_hash'])

def mainScreen():
     # Display Wallet / Buy Info
    print('Wallets List')
    print('------------')

    for address in addresses:
        print(address["wallet"] + ' | Amount to buy: ' 
        + str(address["amount"]) + ' | Current Balance : ' 
        + str(web3.fromWei(web3.eth.get_balance(address["wallet"]), 'ether')))
    # Print Options
    print('')
    print('What do you want to do?')
    print('-----------------------')
    print('')
    print('1) TG Scan')
    print('')

    input("Enter your answer: ")
    scanTg1()
    # Take input 

def scanTg1():
    print('')
    if config['tgGroup'] == "":
        group = input("Link to the TG: ")
    else: 
        group = config['tgGroup']
    print("Scanning : " + group)
    @client.on(events.NewMessage(chats=group))
    async def my_event_handler(event):
        global handleNewMessage
        if event.raw_text is not None and handleNewMessage == True:
            if 'stealth' in event.raw_text.lower():
                if '0x' in event.raw_text:
                    x = event.raw_text.split()
                    for string in x:
                        if '0x' in string:
                            start = string.index('0')
                            contract = Web3.toChecksumAddress(string[start:start+42].lower())
                            contractFound = await checkContract(contract)
                            if contractFound == True:
                                print("Contract Found: " + contract)
                                handleNewMessage = False
                                await buyTheToken(contract)
                    if contractFound == False:
                        if 't.me' in event.raw_text:
                            x = event.raw_text.split()
                            for string in x:
                                if 't.me' in string:
                                    tgLink =x[x.index(string)] 
                                    print("Found " + tgLink)
                                    await scanOldMessages(tgLink)
                        else:
                            print('*')
                

                elif 't.me' in event.raw_text:
                    x = event.raw_text.split()
                    for string in x:
                        if 't.me' in string:
                            tgLink =x[x.index(string)] 
                            print("Found " + tgLink)
                            await scanOldMessages(tgLink)
                else:
                    print('*')        
            else:
                print('*')
    client.start()
    client.run_until_disconnected()

async def buyTheToken(contract):
    print("Bought the Token")
    sellToken()

def sellToken():
    print("Token sold")
    mainScreen()


4

0 回答 0