Найти тему
Qorred

Создаем бот Тех поддержки на Python(aiogram)

Код бота, который предназначен для модерации вопросов, который может быть использован в Telegram. Этот бот позволяет пользователям отправлять вопросы, которые затем могут быть просмотрены модератором. После отправки вопроса, модератор может ответить на вопрос, просмотреть список всех вопросов, удалить любой вопрос по id, очистить БД. Код бота написан на языке Python с использованием фреймворка aiogram для работы с Telegram API.

Структура бота.
Структура бота.
Машина состояний.
Машина состояний.

Для работы с БД мы импортируем асинхронную библиотеку aiosqlite.
Создаем Класс 'Database' для работы с БД.

Функция 'create_connection' - создает асинхронное соединение с БД.
Функция 'create_table' - создает таблицу 'questions' в базе данных, если она еще не была создана.
Функция 'create_connection' - создает асинхронное соединение с БД. Функция 'create_table' - создает таблицу 'questions' в базе данных, если она еще не была создана.
Функция 'add_question' - добавляет вопрос пользователя в базу данных.
Функция 'get_unanswered_questions' - получает список вопросов из базы данных.
Функция 'add_question' - добавляет вопрос пользователя в базу данных. Функция 'get_unanswered_questions' - получает список вопросов из базы данных.
Функция 'update_question_id' - обновляет ответ на вопрос с указанным ID в базе данных.
Функция 'get_all_questions' - получает все вопросы из таблицы 'questions' в базе данных.
Функция 'update_question_id' - обновляет ответ на вопрос с указанным ID в базе данных. Функция 'get_all_questions' - получает все вопросы из таблицы 'questions' в базе данных.
Функция 'get_question' - получает данные вопроса из базы данных по его id.
Функция 'delete_question' - удаляет вопрос из базы данных по его id.
Функция 'get_question' - получает данные вопроса из базы данных по его id. Функция 'delete_question' - удаляет вопрос из базы данных по его id.
Функция 'clear_questions' - удаляет все записи из таблицы и обнуляет счетчик.
Функция 'clear_questions' - удаляет все записи из таблицы и обнуляет счетчик.

Далее переходим к Хендлерам.
Импорты:

-8

Хендлер для команды 'start'.

Отправляет пользователю стартовое сообщение
Отправляет пользователю стартовое сообщение

Следующий хендлер для команды 'question'.

Обрабатывает команду 'question' для добавления вопроса в базу данных и передачи модератору.
Обрабатывает команду 'question' для добавления вопроса в базу данных и передачи модератору.

Следующий хендлер для команды 'answer'.

Обработчик команды 'answer'. Отправляет первый вопрос без ответа модератору.
Обработчик команды 'answer'. Отправляет первый вопрос без ответа модератору.
Обрабатывает ответ пользователя на вопрос модератора, сохраняет ответ в базу данных и уведомляет пользователя о полученном ответе.
Обрабатывает ответ пользователя на вопрос модератора, сохраняет ответ в базу данных и уведомляет пользователя о полученном ответе.

Следующий хендлер для команды 'all_questions'.

Обработчик команды 'all_questions', который получает все вопросы и ответы из базы данных. Только для модератора.
Обработчик команды 'all_questions', который получает все вопросы и ответы из базы данных. Только для модератора.

Следующий хендлер для команды 'cancel', который должен быть в начале кода.

Отменяет текущее состояние FSM и уведомляет модератора. Только для модератора.
Отменяет текущее состояние FSM и уведомляет модератора. Только для модератора.

Следующий хендлер для команды 'delete'.

Удаление вопроса из базы данных по id. Только для модератора, для этого нужно добавить (commands=['delete'], user_id=MODERATOR_CHAT_ID)
Удаление вопроса из базы данных по id. Только для модератора, для этого нужно добавить (commands=['delete'], user_id=MODERATOR_CHAT_ID)

Последние два хендлера 'clear', 'help'.

'clear' - очищает список вопросов и ответов в базе данных. Только для модератора.
'help' - показывает доступные команды для пользователя и модератора
'clear' - очищает список вопросов и ответов в базе данных. Только для модератора. 'help' - показывает доступные команды для пользователя и модератора

Перейдем к файлу с сообщениями 'messages'

Создаем все сообщения, которые нам понадобятся. Неймингу стоит уделить побольше времени и давать осмысленные названия переменных, чтобы не запутаться(не так как в примере)
Создаем все сообщения, которые нам понадобятся. Неймингу стоит уделить побольше времени и давать осмысленные названия переменных, чтобы не запутаться(не так как в примере)

Далее создаем словарь

Это один из способов реализации. Чтобы не писать текст в самом коде, мы импортируем его с файла 'messages'
Это один из способов реализации. Чтобы не писать текст в самом коде, мы импортируем его с файла 'messages'

И файл 'loader.py', который запустит наш бот

-19

Работа бота в ТГ

Пользователь пишет команду 'start' потом задает вопрос с помощью команды 'question'
Пользователь пишет команду 'start' потом задает вопрос с помощью команды 'question'

Сообщения доставлены модератору

С помощью команды 'answer' модератор отвечает на первый неотвеченный вопрос; 'all_questions' - просматривает все вопросы в БД; 
'delete <id>' удаляет сообщение с БД;
'cleare' очистка БД.
С помощью команды 'answer' модератор отвечает на первый неотвеченный вопрос; 'all_questions' - просматривает все вопросы в БД; 'delete <id>' удаляет сообщение с БД; 'cleare' очистка БД.

Бот тех поддержки готов. ГЛХФ

-22

Наука
7 млн интересуются