使用python制作电报机器人

时间:2020-02-17 13:07:04

标签: python telegram xlsx telegram-bot

我正在尝试使用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()

1 个答案:

答案 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 .:您似乎并没有使用导入中的requestsre