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

Мне нужно чтобы из текстового файла брались заранее заготовленные фразы рандомно и отправлялись в мною указанный промежуток времени. Как это можно реализовать?


Ответы (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)
→ Ссылка