Оглавление
Предисловие
Описание
Scipio — телеграм-бот, позволяющий пользователям решать задачи по математике, логике, создавать свои карточки, устанавливать начало тренировки в определенное время — в общем, учиться.
Откуда взялась идея?
Летом 2020 года возникла идея, что необходимо создать какую-то программу, которая бы помогала людям практиковаться в решении примеров в голове (Например: умножение чисел 28 и 73 или возведение числа 34 во вторую степень) - это необходимо для того, чтобы при решении математических и не только математических задач не отвлекаться на элементарные примеры и решать их быстро и без проблем.
Почему я вообще решил, что программа нужна? Разве обычной теории и простого обучения будет недостаточно?
Ответ на этот вопрос – нет, этого будет недостаточно.Чтобы приобрести какой-либо навык и достичь в нем совершенства, нужны ежедневные, настойчивые упражняться .
Практика необходима в любом процессе обучения – без нее ваш навык потеряет свою силу уже через несколько дней после обучения.
И как раз для изучения навыка «Примеры для вычислений в уме» я решил создать этот проект, чтобы каждый день решать примеры и тем самым тренироваться.
Почему Telegram-бот?
Создание отдельных программ для телефона и для компьютера заняло бы слишком много времени.После обдумывания различных вариантов возникла идея создания телеграм-бота.
Почему это было отличное решение? Потому что:
- Сам алгоритм бота будет един для любого пользователя и будет работать как на компьютере, так и на любом телефоне.
- Очень удобно взаимодействовать с пользователями через ботов.
Если пользователю необходимо получить какую-то информацию, ему достаточно отправить сообщение боту.
- Telegram на данный момент является одним из самых популярных, быстрорастущих и самых технологичных мессенджеров.
+ в связи с последними событиями популярность телеграма выросла огромными темпами
- 99% ботов Telegram написаны на Python. Я не только активно использовал этот язык в своей работе, но и просто хотел улучшить свои навыки.
Почему СципИО?
Название ScipIO существует не просто так.Создателя интересует история древнего Рима, а в ней Сципион (Scipio) был великим полководцем, победившим самого Ганнибала, а также в программировании (и особенно в телеграммах) присутствует одна из основных концепций IO (ввод-вывод ), что означает ввод-вывод. Это способ взаимодействия программы с другими ее частями или с внешним миром, а точнее с сервером.
План
Почему это невозможно без плана?
Если вы работаете без плана, вы будете принимать решения хаотично, что может привести к:- Создание проекта займет слишком много времени.
- Вы не сделали то, что хотели, или не сделали вообще
- Возможно, вы что-то и узнали, но без четкой иерархии и распределения знаний вся новая информация не сможет прочно укорениться в вашей памяти.
Сам план
Первоначальный план бота заключался в следующем:- Ментальная математика (тренировка мысленного счета)
- Category_math, Category_logic (задачи по математике и логике)
- Таймер (Начать тренировку в определенное время по запросу пользователя)
- карточки - обучение с использованием карточек.
На одной стороне написано слово, а вы должны произнести это слово на другой стороне.
- статистика (для пользователей) - статистика решенных проблем пользователей
- Панель администратора :
- Отправить сообщение всем пользователям
- Статистика количества пользователей
Инструмент планирования
Чтобы не путаться в плане и задачах, я создал доску Трелло .Это отличный инструмент, потому что.
он позволяет четко и подробно писать задачи, ставить цели и позволяет всей команде очень удобно просматривать задачи.
Если интересно, таблица выглядит так:
Подготовка
Невозможно было так сразу и так легко приступить к проекту, поэтому перед написанием была проведена подготовка:- Питон - Тут особых проблем не было, потому что.
он мне уже был знаком.
Однако, чтобы пересмотреть (и закрепить) знания, я перечитал книгу Марка Лутца «Изучение Python».
Также приведу ссылку для просмотра файла, в котором я сохранил полезные ссылки и вырезки на питоне, пока повторял все необходимое (все ссылки есть в Полезной литературе).
- Асинхронность, а также многопроцессорность и многопоточность - правильно работать с айограмма , необходимо уметь взаимодействовать с асинхронностью (не буду описывать, что это значит и т. д., подробнее все есть в полезных ссылках).
Еще я подумал, что может быть полезно иметь возможность взаимодействия с многопроцессорностью и многопоточностью, но пока в первых релизах бота это не требовалось
- AIограмма — это асинхронная среда Python для создания ботов Telegram. В качестве подготовки было написано несколько небольших ботов, выполняющих ту или иную функцию.
И кстати, всем советую подготовиться таким образом, потому что при чтении теории может сложиться впечатление, что вы все знаете и понимаете, но сразу при создании основного бота вы будете очень растеряны и глупы.Избежать этого поможет создание небольших ботов.
- Sql, beatifulsoap, matplotlib, подушка - все эти вещи изучались или повторялись в процессе написания бота.
Это не инструменты, изучение которых требует отдельного времени, чтобы получить базовое понимание, и вы можете легко освоить их по ходу дела.
Главная часть
Далее описывается реальная работа наших алгоритмов и т.д. Подробного технического объяснения функционала здесь не будет, потому что.более подробная информация содержится в Прочти меня наш проект или в комментариях к коду.
База данных
Сначала нам нужна была база данных для сохранения задач по математике (category_math) и логике.В дальнейшем база данных стала расширяться, т.к.
возникла необходимость сохранения пользователей telegram_id, карточек пользователей и т.д.
Склайт
Sqlite был выбран потому, что это отличная СУБД для начала.Поддерживаются простые SQL-запросы (при желании можно также использовать инструмент SQLAlchemy) и очень удобная программа на вашем компьютере, позволяющая просматривать данные и взаимодействовать с базой данных.
Но мы настоятельно не рекомендуем использовать Sqlite, когда вы уже запускаете проект для большого количества пользователей, потому что.Sqlite может и простой, но это локальная база данных и вам придется сливать базу данных с git вслепую.
Если есть возможность, постарайтесь сразу изучить PostgreSQL, потому что.
он технически более совершенен и гораздо функциональнее.
Стол | Описание |
---|---|
действия | Таблица действий пользователя.
Например, при выполнении flc функция action_add(message.from_user.id, 'flc') который добавляет данные в таблицу |
категория | Категории задач |
карточки | Карты пользователей |
Task_logic | Задачи по категориальной логике |
задача_математика | Задачи по категории математика |
время | Пользовательские таймеры |
пользователи | Все пользователи, использующие бота |
Мысленно математика
Как было сказано, изначально проект создавался для алгоритма обучения математических примеров, поэтому первая функция Сципион стал /mentally_math.Функция работает следующим образом: у пользователя спрашивают, готов ли он, а затем (если пользователь нажимает «Да») генерируется пример и отправляется пользователю.
Пользователь решает определенное количество задач, и при нажатии на кнопку «Завершить примеры в уме» бот отправляет статистику (в нее входят id задач, правильные ответы на них, количество попыток, необходимых для решения задачи).
пример).
Если пользователь хочет изучить или повторить теорию решения примеров ментальной арифметики, ему необходимо ввести в боте /mell_theory. Множественное техническое описание алгоритма Mentally math Базовый алгоритм очень похож на (flashcards_training), но имеет некоторые отличия, а именно алгоритм требует постоянной проверки ввода (ответа) пользователя.
/mentally_math — это тренировка ментальной арифметики.
В зависимости от того, генерируется степень или умножение, диапазон чисел меняется, но точнее он выглядит следующим образом: - Теги: #python #мессенджеры #Telegram #asynchrony #project #telegram боты #aiogram
-
Лейбниц, Готфрид Вильгельм
19 Oct, 24 -
Необходимый Ремонт Компьютерной Периферии
19 Oct, 24 -
Датчик В Теле Человека Сообщит О Голоде
19 Oct, 24 -
Умная Няня На Базе Intel Edison И Ubidots
19 Oct, 24