1

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

我尝试将它收到的消息记录到控制台(尽管我不确定控制台应该在 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?')

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

4

1 回答 1

1

确实有什么我没有注意到的。发布以防万一它对任何人都有帮助。

在 PythonAnywhere 的 Web 应用程序部分,有三个日志文件链接,您可以在其中查看常规 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)
    }
}
于 2019-07-04T14:28:05.887 回答