我不能使用多行或将文本添加到我的电报机器人

时间:2019-08-14 04:15:12

标签: python telegram-bot

我想要做的是在用户使用命令时发送一条消息

/cotizacion

该消息应如下所示:

Ultima Actualizacion: content[fecha]
Compra: content[compra]
Venta: content[venta]
Variacion: content[variacion]

我不能做的是:

  1. 添加文本(例如Ultima Actualizacion)
  2. 多行显示信息(如上所示)

我已经尝试过使用或+进行的所有操作,但是由于我是Python的新手,我真的迷失了。

from telegram.ext import Updater, InlineQueryHandler, CommandHandler
import requests
import re

def get_cotizacion():
    content = requests.get('https://mercados.ambito.com/dolar/oficial/variacion').json()
    fecha = content['fecha']
    compra = content['compra']
    venta = content['venta']
    variacion = content['variacion']
    cotizacion = (fecha+ compra+ venta+ variacion)
    return cotizacion

def cotizacion(bot, update):
    cotizacion = get_cotizacion()
    chat_id = update.message.chat_id
    bot.send_message(chat_id=chat_id, text= cotizacion)

def main():
    updater = Updater('#######')
    dp = updater.dispatcher
    dp.add_handler(CommandHandler('cotizacion',cotizacion))
    updater.start_polling()
    updater.idle()

if __name__ == '__main__':
    main()

2 个答案:

答案 0 :(得分:0)

我只知道python,所以我只能告诉您如何从json构建字符串,因为我对电报机器人一无所知。我假设内容是字符串(如果不是,则可能需要将其转换)

您可以这样做:

cotizacion = "Ultima Actualizacion: " + content[fecha] + \n + "Compra: " + ...

\ n代表换行符,+将多个字符串加在一起

您可以使用str(my_number)将数字等转换为字符串-如果您的json返回的不是字符串,则可能有帮助 尽管它不能与列表一起使用,所以请检查您的数据类型。

如果您不想像这样硬编码,则可能要使用这样的字典: {     “ Ultima Actualizacion”:“ fecha”,     “ Compra”:“ compra”,      ... }

也许有更好的解决方案,但这是我想到的第一个=)

答案 1 :(得分:0)

您可以在新行中使用“ \ n”。因此您的代码可能像这样。

cotizacion = '\n'.join('Ultima Actualizacion: ' + fecha, 'Compra: ' + compra, 'Venta: ' + venta, 'Variacion: ' + variacion)