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": []
},
Вы можете записать каждое сообщение, которые вам приходит. А после его обработать через модуль 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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP