我正试图在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?')
感觉好像我错过了每个人都认为理所当然的一些简单信息,但是我不知道那是什么。
答案 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)
}
}