/Competition

Telegram-bot

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Документация Tbot.
Логин оригинального бота @Riisubot

Инструкция по установке

Требования перед установкой: версия интерпретатора Python не ранее 3.4. Последнюю версию интерпретатора можно скачать здесь: https://www.python.org/downloads/release/python-360 Порядок установки:

• Скачать из дирректории https://github.com/Animatory/Competition файлы; сonfig.ini, Tbot.pyz, requirements.txt;

• Зарегистрировать в телеграмме бота, получив его токен;

• В файле сonfig.ini указать в параметрах токен бота и пароль для регистрации первого админа;

• Запустить Tbot.pyz;

• Если не запускается, то установите для интерпретатора модули pyTelegrambotAPI и configparser;

• В телеграмме начать диалог с ботом;

• Ввести боту команду «/admin <Пароль>».

Добавление новых пользователей и администраторов

Правила при добавлении пользователей в базу банных бота:

• Прежде, чем добавить пользователя или администратора в базу данных бота, у них должна существовать беседа с ботом. Поэтому необходимо отправить добавляемому пользователю username бота, и он должен начать разговор, нажав кнопку /start;

• Быть внимательным при вводе данных участника и выборе сообщения для добавления.

Режим работы

Бот может работать на любом компьютере или сервере, где установлен интерпретатор Python 3.4+.

В процессе работы, он отправляет пользователям сообщения, установленные администраторами. Так же он создаёт две базы данных, удалять или изменять которые нежелательно, иначе в работе бота возникнут ошибки или данные о пользователях могут быть потеряны. В случае возникновения ошибки, необходимо отправить лог ошибки на электронный адрес 1672.1725@mail.ru и перезапустить бота.

Доступный функционал

В режиме ученика:

• Автоматически:

o Уведомление о наступающих событиях: “Через 5 минут: обед, Столовая”;

o Уведомление о получении новой ачивки: “Вы получил достижение: Неспящий”;

o Расписание на день по утрам и его обновления в течение дня: список время – событие, место;

o Срочные сообщения: “Всем срочно на внеплановый второй обед!”;

• По запросу:

o Список ачивок пользователя;

o Полное расписание на день как своей группы, так группы по запросу;

o Информация о текущем событии - “что и где сейчас идет?”;

o Справочная информация:

 Номера телефонов вожатых и преподавателей;

 Команда “/где” - говорит, где живет участник;

• Режим квеста:

o Авторизация по логину команды - начинает квест;

o Для каждой команды - последовательность вопросов, при правильном; ответе задается следующий вопрос.

В режиме администратора:

o Добавление ученика или администратора;

o Добавление расписание на день;

o Добавление ачивки;

o Отправка срочного сообщения;

o Составление квеста;

o Изменение личных данных.

Команды бота

Однопользовательский режим

Команды администратора

/добавить_участника <Фамилия> <Имя> <Отчество>, <Группа>, <Место жительства> - добавляет пользователя в базу бота и предоставляет ему доступ пользовательскому функционалу бота и даёт возможность администраторам взаимодействовать с ним. После ввода этой команды нужно переслать боту любое сообщение этого пользователя. Если указали неверные данные, то команда /break прерывает выполнение команды Пример: "/добавить_участника Иванов Иван Иванович, 6 отряд биотехнологии, 20 комната".

/добавить_администратора <Фамилия> <Имя> <Отчество>, <Телефон>, <Деятельность> - даёт пользователю права администратора. После ввода этой команды нужно переслать боту любое сообщение этого пользователя. Если указали неверные данные, то команда /break прерывает выполнение команды. Пример: "/добавить_администратора Иванов Иван Иванович, 8 800 888 8888, Вожатый 6 отряда".

/установить_расписание <Группы> - добавляет расписание для заданной группы. Можно указать одну или несколько групп через запятую. Если указать в качестве аргумента "*", то расписание будет добавлено для всех групп. Примеры: "/установить_расписание 6 отряд, 5 отряд" или "/установить_расписание *" После ввода этой команды посылается сообщение, содержащее в себе пояснения по вводу расписания. После этого, следуя форме, можете записывать расписание

/создать_квест <Название квеста> - создаёт квест, в котором могут участвовать только команды. Пример: "/создать_квест Анатомия"

/результаты – показывает результаты квестов, пройденных командами.

/расписание <Группа> - выводит расписание указанной группы Пример корректной команды: "/расписание 6 отряд"

/сообщение <Группы>; <Сообщение> - посылает пользователям, принадлежащим к указанным группам сообщение. Если в качестве группы написать "*", то сообщение будет отправлено всем пользователям. Примеры корректной команды: "/сообщение 6 отряд, 5 отряд; Текст" или "/сообщение *; Текст"

/дать_ачивку (<ФИО пользователя>) <ачивка> - даёт пользователю, указанному в скобках ачивку. Пример корректной команды: "/дать_ачивку (Иванов Иван Иванович) Неспящий"

/ачивки <ФИО пользователя> - показывает список ачивок пользователя Пример корректной команды: "/ачивки Иванов Иван Иванович" Команды «/имя <Имя>», «/фамилия <Фамилия>», «/отчество <Отчество>», «/номер <Номер телефона>», «/деятельность <Деятельность>», «/осебе <Краткая информация об администраторе>» позволяют администратору менять личные данные, доступные участникам. Желательно указывать реальные данные, чтобы ученики понимали, кто это.

/где <Фамилия>, <Имя>, <Отчество>, <Группа> - показывает, где живет пользователь с указанными данными. Можно указать от 0 до 4 параметров. Порядок не имеет значение. Если таких пользователей несколько, то бот выводит их всех Примеры корректной команды: "/где Пётр", "/где 6 отряд", "/где Пётр, 6 отряд, Викторович”.

/руководители - выдаёт список всех администраторов с информацией о них

/участники - выдаёт список всех пользователей с информацией о них Команды пользователя

/событие – выводит текущий и следующий пункт в расписании

/ачивки <ФИО пользователя> - показывает список ачивок пользователя. При отсутствии ФИО выводит ачивки пользователя, вызвавшего команду. Пример: "/ачивки Иванов Иван Иванович" или " /ачивки".

/расписание <Группа> - выводит расписание указанной группы. При отсутствии группы выводит расписание пользователя, вызвавшего команду. Пример: "/расписание 6 отряд".

/где <Фамилия>, <Имя>, <Отчество>, <Группа> - показывает, где живет пользователь с указанными данными. Можно указать от 0 до 4 параметров. Порядок не имеет значение. Если таких пользователей несколько, то бот выводит их всех. Примеры: "/где Пётр", "/где 6 отряд", “/где Пётр, 6 отряд, Викторович”.

/руководители - выдаёт список всех администраторов с информацией о них.

/участники - выдаёт список всех пользователей с информацией о них.

Многопользовательский режим. Режим квеста.

Перед началом квеста, администратору необходимо создать квест командой /создать_квест. После вызова этой команды администратору будет предложено написать логины команд, участвующих в квесте. Логины можно указать только один раз, и при создании следующего квеста они уже будут в базе данных! После ввода команд, администратор должен отправить боту рад вопросов с ответами. При этом необходимо придерживаться следующих правил:

  1. Вопрос и ответ на него отправляйте боту в одном сообщении, разделив их знаком переноса строки.

  2. При обнаружении ошибки в одном из отправленных вопросов, введите команду '/переписать <Номер вопроса>', а в следующем сообщении исправленный вариант. Отсчёт вопросов начинается с 1.

  3. Команда /end завершает ввод и сохраняет квест.

  4. Команда /break прерывает ввод, квест не сохраняется.

Со стороны команд необходимо сделать следующее:

• Создать группу в Телеграмме, включающую всех участников команды, а также бота.

• В ней ввести команду «/quest <Название квеста>»

• Создатель беседы (капитан команды по совместительству) должен ввести логин команды.

После этого команде будет задан ряд вопросов, ответы на которые должны быть вида «/ответ <Ответ>». Ответив на все вопросы, команда получает определённое количество баллов, получаемое по следующей формуле: <Баллы> = <кол-во секунд, потраченных на решение> + <кол-во всех ответов, посланных боту>*10 По логике следует, что чем больше баллов, тем хуже результат.

Администратор может получить список всех результатов командой «/результаты»

Со стороны бота существует несколько ограничений:

  1. Команда, прошедшая квест, не может пройти этот квест снова.

  2. Логин команды связывается с создателем группы, из-за чего одна группа не сможет пройти квест за другую группу. Поэтому перед началом прохождения основных квестов, необходимо провести пробный квест, чтобы связать группы и их логины.

  3. В группах недоступны стандартные команды бота.

  4. Если квест начался, то остановится только после ответа на все вопросы, либо при отключении бота.