Json в python петле - PullRequest
       37

Json в python петле

1 голос
/ 14 апреля 2020

Я новичок, у меня есть вопрос: я собираюсь создать бот-телеграмму с использованием ботограммы, я хотел бы вставить элемент моего списка в код JSON с помощью python l oop. В этом случае я хотел бы создать кнопки с Нью-Йорком, Лос-Анджелесом и Вашингтоном, {'text': i}, но на телеграмме появляется только одна кнопка с последним пунктом (Вашингтон). Я хочу создать 3 кнопки.

import botogram
import json

bot = botogram.create("token")

list = ['New York',"LA", "Washington DC"]

@bot.command("start")
def start_command(chat, message):
    for i in list:
        bot.api.call('sendMessage', {
            'chat_id': chat.id,
            'text': 'Where are you?',
            'reply_markup': json.dumps({
            'keyboard': [
                [
                    {'text': i},
                    {'text': 'Action B'},
                ],
                [
                    {
                        'text': 'Use geolocation',
                        'request_location': True,
                    },
                ],
            ],
            'resize_keyboard': True,
            'one_time_keyboard': True,
            'selective': True,
        }),
    })

if __name__ == "__main__":
     bot.run()

Ответы [ 2 ]

1 голос
/ 14 апреля 2020

Вы не зацикливаетесь на list, чтобы создать три кнопки, вы зацикливаетесь на list, чтобы отправить три сообщения. Создайте свой список определений кнопок, затем добавьте его в свой l oop, затем отправьте сообщение за пределы l oop.

0 голосов
/ 14 апреля 2020

Я никогда не использовал ботограмму, но, как я вижу, я предлагаю вам создать переменную в для l oop (словарь - dict) и затем вызвать bot.api. Звоните

@bot.command("start")
def start_command(chat, message):
    for i in list:
        dict = {
            'chat_id': chat.id,
            'text': 'Where are you?',
            'reply_markup': {
            'keyboard': [[
                {'text': i},
                {'text': 'Action B'},
            ],
            [
                {
                    'text': 'Use geolocation',
                    'request_location': True,
                },
            ],
        ],
        'resize_keyboard': True,
        'one_time_keyboard': True,
        'selective': True, 
        }
    }
    bot.api.call('sendMessage', dict)

Я надеюсь, что это поможет вам, хотя бы немного!

...