Как в боте реализовать рандомную отправку конкретных фраз из текстовика?
Мне нужно чтобы из текстового файла брались заранее заготовленные фразы рандомно и отправлялись в мною указанный промежуток времени. Как это можно реализовать?
Ответы (1 шт):
Автор решения: zrx
→ Ссылка
Допустим, в файле phrases.txt есть набор готовых ответов; на одной строчке - один ответ.
Пусть наш бот будет отправлять рандомные фразы из phrases.txt каждые 10 минут.
Для парсинга файла я буду использовать функцию file.readlines(), вот ссылка на документацию: https://docs-python.ru/tutorial/metody-fajlovogo-obekta-potoka-python/metod-file-readlines/
Для того, чтобы бот отправлял сообщения в промежуток времени, есть 2 способа: crontab или time.sleep(). Я покажу второй вариант.
phrases.txt
Привет, человек!
А я что, знаю что ли?
Как твои дела?
main.py
# Импортируем библиотеки
import telebot
import random
import time
# Инициализируем бота
bot = telebot.TeleBot('TOKEN')
CHAT_ID = # сюда надо вписать ID чата в который бот будет
while True:
phrases = open("phrases.txt", "r") # Откроем файл для чтения
content_list = phrases.readlines()
'''
Функция прочитает файл и разобьёт его построчно
content_list = ['Привет, человек!\n', 'А я что, знаю что ли?\n', 'Как твои дела?\n']
'''
bot.send_message(CHAT_ID, random.choice(content_list)) # Выбираем рандомную фразу из списка и отправляем её в чат
time.sleep(600) # 600 - 10 минут в секундах
# Запускаем бота
bot.polling(none_stop=True)