Вот примерный README.md файл для описанного задания:
Этот бот позволяет периодически закреплять и откреплять указанное сообщение в Telegram чате.
Основные возможности:
- Закрепление сообщения с уведомлением участников
- Параллельная работа с множеством чатов
- Работа только с администратором
Для работы бота нужен:
- Python 3.10 и выше
- Библиотека aiogram
- Токен для бота от @BotFather
- Вписанный токен и id админа в файл CONFIG.py
Установка зависимостей:
pip install -r requirements.txt
- Добавить бота в чат с правами администратора и правами на закрепление сообщений
- Выполнить команду /add_pin_message
- /add_pin_message - закрепить сообщение
- /stop остановить перезакрепление сообщения
Данный код представляет собой бота для периодического закрепления сообщений в Telegram.
1. В начале кода импортируются необходимые модули и библиотеки.
2. Затем идет проверка на админа и на приватный чат.
3. Далее определены состояния конечного автомата.
4. Затем идут функции для запуска бота, добавления закрепленного сообщения, получения ссылки на группу и сообщение, установки времени и тегирования сообщений, а также функции для цикличного закрепления сообщений с тегированием.
5. В конце кода определены функции для обработки незапланированных сценариев и запуска бота.
Шаги выполнения кода:
1. Импортирование необходимых модулей и библиотек.
2. Определение функций для проверки админа и приватного чата.
3. Определение состояний конечного автомата.
4. Определение функции для запуска бота.
5. Определение функции для добавления закрепленного сообщения.
6. Определение функции для получения ссылки на группу и сообщение.
7. Определение функции для установки времени и тегирования сообщений.
8. Определение функции для цикличного закрепления сообщений с тегированием.
9. Определение функции для обработки незапланированных сценариев.
10. Определение функции для запуска бота.
11. Запуск бота.
В боте определены следующие функции:
1. `cmd_start(message: types.Message)` : Функция, которая отвечает на команду /start и приветствует пользователя.
2. `start_pin_message(message: types.Message, state: FSMContext)` : Функция, которая запускает процесс закрепления сообщения. Проверяет, является ли пользователь администратором и принимает ссылку на сообщение.
3. `get_chat_link(message: types.Message, state: FSMContext)` : Функция, которая получает ссылку на сообщение и сохраняет ее. Затем запрашивает время, на которое нужно закрепить сообщение.
4. `get_timer(message: types.Message, state: FSMContext)` : Функция, которая получает время (в минутах) и выполняет закрепление сообщения на указанное время.
5. `stop_pin(message: types.Message)` : Функция, которая останавливает закрепление сообщения.
6. `add_group(message: types.Message, state: FSMContext)` : Функция, которая добавляет бота в группу и запрашивает ссылку на сообщение, которое нужно перезакреплять.
7. `get_group_link(message: types.Message, state: FSMContext)` : Функция, которая получает ссылку на сообщение и сохраняет ее. Затем запрашивает сообщение, которое нужно перезакреплять.
8. `get_message(message: types.Message, state: FSMContext)` : Функция, которая получает сообщение, которое нужно перезакреплять, и спрашивает, нужно ли тегирование.
9. `will_teg_be_used(message: types.Message, state: FSMContext)` : Функция, которая определяет, будет ли использоваться тегирование и запрашивает время перезакрепления.
10. `timer(message: types.Message, state: FSMContext)` : Функция, которая получает время перезакрепления и запускает цикличное перезакрепление сообщений.
11. `stop_tagged(message: types.Message)` : Функция, которая останавливает цикличное перезакрепление сообщений с тегированием.
12. `send_message_with_tags(tegs_in_tuple)` : Функция, которая отправляет сообщение с тегами.
13. `other(message: types.Message)` : Функция, которая обрабатывает незапланированные сценарии.
14. `build_session()` : Функция для создания сессии бота.
15. `main()` : Функция для запуска бота.
16. `pin_unpin_message(chat_id, message_id, timer, message)` : Функция для закрепления и снятия закрепленного сообщения.
17. `infinity_tags(chat_id, number_of_tags)` : Функция для цикличного перезакрепления сообщений с тегированием.
Это основные функции, определенные в боте. Каждая функция выполняет определенные задачи в процессе работы бота.