TransWikia.com

Telegram Client API

Stack Overflow на русском Asked by LeonidPetrovich on November 20, 2021

форумчане. У меня такой вопрос. Реализую сбор сообщений из чата telegram и записываю их в формате json `

for message in messages:
            all_messages.append(message.to_dict())
        first_record_number = messages[len(messages) - 1].id
        total_messages = len(all_messages)
        if total_count_limit != 0 and total_messages >= total_count_limit:
            break

    with open('channel_messages.json', 'w', encoding='utf8') as outfile:
        json.dump(all_messages, outfile, indent=2, ensure_ascii=False, cls=DateTimeEncoder)`

Как записывать лишь те сообщения, в которых присутствуют определенные слова ?

Запись в таком формате:

{
    "_": "Message",
    "id": 62,
    "to_id": {
      "_": "PeerUser",
      "user_id": 900804548
    },
    "date": "2020-07-21T08:25:59+00:00",
    "message": "ioc love belarus",
    "out": true,
    "mentioned": false,
    "media_unread": false,
    "silent": false,
    "post": false,
    "from_scheduled": false,
    "legacy": false,
    "edit_hide": false,
    "from_id": 782177156,
    "fwd_from": null,
    "via_bot_id": null,
    "reply_to_msg_id": null,
    "media": null,
    "reply_markup": null,
    "entities": [],
    "views": null,
    "edit_date": null,
    "post_author": null,
    "grouped_id": null,
    "restriction_reason": []
  },

One Answer

Вы можете записать каждое сообщение, которые вам приходит. А после его обработать через модуль re.

Допустим вы определили исходный перечень слов, по которым вам нужно записать сообщение. Однако помните, что это плохой способ. Если вы посмотрите на список ниже, слово диван некорректно указано. И в этом случае все сообщения, в которых корректно указано это слово , записаны не будут!

msg_list = ['пиво', 'диванэ', 'кофе', 'мотор']

Далее определяем получения сообщения. Для того, что бы увидеть текст сообщения пользователя используйте message.text. так же в ответе json можно записать и номер телефона и ФИО.

@bot.message_handler(content_types=['text'])
def send_text(message):

    for item in msg_list:
        if item in message.text:
            bot.send_message(message.chat.id, f'я записал слово "{message.text}"')
    
    
    user_message = message.text
    ### your logic parse tring by 're' module

Не забудьте реализовать запись сообщения, которое было отредактировано.

Answered by WilteRatenau on November 20, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP