Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2023 13:36:58

Aigul
Зарегистрирован: 2023-04-17
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Как отправить в телеграм бот определенные данные из полученных запросом?

Подскажите пожалуйста Запросом получаю вот такие данные:

 "cd": {
"pol": [
{
"bd": 111111,(Значение меняется)
"cmn": {
"al": "32423434543534532",
"amd": "22222", (Значение меняется)
"mtt": "BBB",
"pol": "0"
}
}
],
"snd":[{ (в зависимости от запроса может быть пусто)
"bd":23232,
"cmn":{
"al": "32423434543534532",
"amd": "32323", (Значение меняется)
"mtt": "BBB",
"pol":"117780"
}
}]
С кодом мне помогли и нужные данные отправляю в телеграм:
 import telebot 
 
bot = telebot.TeleBot('ВАШ_ТОКЕН_БОТА') 
 
@bot.message_handler(commands=['start']) 
def start_message(message): 
    bot.send_message(message.chat.id, 'Привет, я бот!') 
     
# Обработка запросов и отправка сообщений 
def handle_data(data): 
    message = f'получено данных из "pol": "bd": {data["cd"]["pol"][0]["bd"]}, "amd": "{data["cd"]["pol"][0]["cmn"]["amd"]}"\n' 
    if data["cd"]["snd"]: 
        message += f'отправлено данных из "snd": "bd": {data["cd"]["snd"][0]["bd"]}, "amd": "{data["cd"]["snd"][0]["cmn"]["amd"]}"' 
    else: 
        message += 'Данных из "snd" нет' 
         
    bot.send_message(CHAT_ID, message)

# Отправка запроса и обработка данных
data = requests.get('ВАШ_ЗАПРОС').json()
handle_data(data)

Все работает но как сделать отправку bd и amd с нескольких блоков. Т.е. в блоке pol и snd могут быть несколько даннын. Примерв pool 2 блока в snd 1 блок:
 "cd": {
"pol": [
{
"bd": 111111,(Значение меняется)
"cmn": {
"al": "32423434543534532",
"amd": "22222", (Значение меняется)
"mtt": "BBB",
"pol": "0"
}
},
{
"bd": 323232,(Значение меняется)
"cmn": {
"al": " ",
"amd": "536", (Значение меняется)
"bl": "fdgfdfdgdfgdfgdfgerer",
"pol": "0"
}
}
],
"snd":[{ (в зависимости от запроса может быть пусто)
"bd":23232,
"cmn":{
"al": "32423434543534532",
"amd": "32323", (Значение меняется)
"mtt": "BBB",
"pol":"117780"
}
}
]
Результат сообщения для телеграма получить такого плана.
получено данных из “pol”:
bd:111111
amd:22222
bd:323232
amd:536
отправлено данных из “snd”:
bd:23232
amd:32323

Офлайн

#2 Апрель 20, 2023 02:25:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9863
Репутация: +  853  -
Профиль   Отправить e-mail  

Как отправить в телеграм бот определенные данные из полученных запросом?

Aigul
С кодом мне помогли
Ну, так выглядит, будто оказали тебе медвежью услугу. Понимаешь, отправляемые данные не надо формировать там же, где ты их отправляешь. Видимо, на коленке тебе и накатали это решение. Код уже стал нечитаемым из-за этого.

Напиши функцию, в которую ты подаёшь этот JSON-текст и которая его обрабатывает как-то (неизвестным образом) и возвращает тебе финальное сообщение, которое будет отправляться в Telegram.

Вот тебе пример того, как ступенчато можно раскладывать данные, обрабатывать их и возвращать какой-то склеенный результат
  
>>> 
>>> # Здесь функции создаются
>>> 
>>> import json
>>> 
>>> def get_text(data):
...     doc = json.loads(data)
...     text1 = get_text1(doc)
...     text2 = get_text2(doc)
...     text3 = create_final_text(text1, text2)
...     out = text3
...     return out
... 
>>> def get_text1(doc):
...     out = doc['a']
...     return out
... 
>>> def get_text2(doc):
...     out = doc['b']
...     return out
... 
>>> def create_final_text(text1, text2):
...     out = 'The {}\nis a friend\nof the {}.'.format(text1, text2)
...     return out
... 
>>> 
>>> # Здесь функции используются для дела
>>> 
>>> data = """
... {
...     "a": "dog",
...     "b": "cat"
... }
... """
>>> 
>>> text = get_text(data)
>>> print(text)
The dog
is a friend
of the cat.
>>>

Вот изучи это и построй своего Telegram-бота так же. Все данные у тебя должны формироваться постепенно, ступенчато и потом готовый результат уже должен передаваться в функцию, которая занимается только посылкой готового сообщения в Telegram через Telegram-бота.

Это называется декомпозиция. Можешь по этому слову в Интернете ещё что-нибудь почитать поподробнее. Так любые тексты любой сложности можно разбирать.



Отредактировано py.user.next (Апрель 20, 2023 02:30:20)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version