我正在尝试使用python创建电报机器人,但由于某种原因,它没有将信息发布到电报中。我的代码应该将数据帧作为表格发送给电报,但是当我从电报中调用它时,它会返回注释(甚至是错误)。
from telegram.ext import Updater, InlineQueryHandler, CommandHandler
import requests
import re
import pandas as pd
def get_data():
data = pd.read_excel('C:/Users/admin/Desktop/data.xlsx')# opening xlsx file as the input
data = data.to_string(columns = ['c.1', 'c.2'], index = False, header = True, line_width = 70, justify = 'left')
return data
def result(bot, update):
data = get_data()
chat_id = update.message.chat_id
bot.send_message(chat_id=chat_id, table=data)
bot.send_photo(chat_id=chat_id, photo=data)
def main():
updater = Updater('Token key')
dp = updater.dispatcher
dp.add_handler(CommandHandler('result',result))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
答案 0 :(得分:0)
您尝试使用新的CallbackContext吗?启动漫游器时,应该有一条消息链接到此页面:https://github.com/python-telegram-bot/python-telegram-bot/wiki/Transition-guide-to-Version-12.0)。上面写着:
现在继续进行大部分更改。您想从以下位置更改所有回调函数:
def start(bot, update, args, job_queue):
# Stuff here
使用CallbackContext更改为新样式
def start(update: Update, context: CallbackContext):
# Stuff here
# args will be available as context.args
# jobqueue will be available as context.jobqueue
我得到了一个像这样的最小示例:
from telegram.ext import Updater, InlineQueryHandler, CommandHandler
def result(update, context):
print('result called')
data = 'mydata'
update.message.reply_text(data)
def main():
updater = Updater('Token', use_context=True)
dp = updater.dispatcher
dp.add_handler(CommandHandler('result',result))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
P.S .:您似乎并没有使用导入中的requests
和re
。