Telegram对webhook Flask应用程序进行更新的结构是什么?

时间:2019-07-04 14:00:30

标签: flask pythonanywhere python-telegram-bot telegram-webhook telepot

我正试图在PythonAnywhere中的带Telepot的Flask应用中使用webhook对Telegram机器人进行编程。因此,我想知道来自Telegram的更新的结构是什么,以便知道其中有什么以及如何调用这些更新,并基本上在bot中使用它。

我尝试将收到的消息记录到控制台(尽管我不确定控制台在PythonAnywhere上的位置),也尝试通过python在同一服务器上写入文件,但这不是要么工作。

#This that seemed easy didn't work either in the Flask web app
with open('log.txt', 'a') as f:
    f.write('Is this working?')

感觉好像我错过了每个人都认为理所当然的一些简单信息,但是我不知道那是什么。

1 个答案:

答案 0 :(得分:1)

确实有些事我没注意到。发布以防万一。

在PythonAnywhere的网络应用程序部分,有三个“日志文件”链接,您可以在其中查看常规Python应用程序在控制台上会出现的各种情况。

这些链接看起来像这样:

username.eu.pythonanywhere.com.access.log 
username.eu.pythonanywhere.com.error.log
username.eu.pythonanywhere.com.server.log #no .eu on the american PythonAnywhere

并且server.log是控制台print语句的结尾。

此外,来自Telegram用户的常规消息在到达Flask时如下所示:

{
'update_id': 123456789, 
'message': {
    'message_id': 42, 
    'from': {
        'id': 42424242, 
        'is_bot': False, 
        'first_name': 'Joaquim', 
        'last_name': 'Pernil Rinoceronts', 
        'username': 'Juqim', 
        'language_code': 'ca'
        }, 
    'chat': {
        'id': 42424242, 
        'first_name': 'Joaquim',
        'last_name': 'Pernil Rinoceronts', 
        'username': 'Juqim', 
        'type': 'private'
        }, 
    'date': 1562247903, 
    'text': 'Patata'
    }
}

贴纸有其信息,其中'text'将为:

'sticker': {
    'width': 512, 
    'height': 512, 
    'emoji': '?', 
    'set_name': 'Ruscamems', 
    'thumb': {
        'file_id': 'AAQEABNgnrsaAAQkkp4QRiVF1rokAAIC', 
        'file_size': 4840, 
        'width': 128, 
        'height': 128
        }, 
    'file_id': 'CAADBAADBQADkvulAumgmwOAjdfYAg', 
    'file_size': 36612
}

图像改为使用'photo',并且它们具有不同大小的集合:

'photo':[
    {
    'file_id': 'AgADBAADVrAxG2wj8FCs-f6v7AGFUQvo-RkABFGq4cIH4_MaHXIFAAEC', 
    'file_size': 2101, 
    'width': 66, 
    'height': 90
    },
    {
    #same but bigger (different id too)
    },
    ... #I got 4 sizes.
    ]

我想我也会发布回调,我们将提供大多数有趣的东西:

{
'update_id': 123456793, 
'callback_query': {
    'id': '424242424242424242', 
    'from': { #Who pressed the Button
        'id': 42424242, 
        'is_bot': False, 
        'first_name': 'Joaquim', 
        'last_name': 'Pernil Rinoceronts', 
        'username': 'Juqim', 
        'language_code': 'ca'
        }, 
    'message': { #What message was the button in
        'message_id': 123, 
        'from': {
            'id': 434343434, 
            'is_bot': True, 
            'first_name': 'The Bot Name', 
            'username': 'name_bot'
            }, 
        'chat': {
            'id': 42424242, 
            'first_name': 'Joaquim', 
            'last_name': 'Pernil Rinoceronts', 
            'username': 'Juqim', 
            'type': 'private'
            }, 
        'date': 1562252792, 
        'text': 'A viam si funciona això', 
        'reply_markup': { #Keyboard pressed
            'inline_keyboard': [[{'text': 'Cliccami', 'callback_data': 'clicat'}]]
            }
        }, 
    'chat_instance': '1234123412341234242', 
    'data': 'clicat' #Callback data (button pressed)
    }
}