Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.
Reload to refresh your session.
Бот для телеграмма с ИИ
pashabezk/MyFirstPythonTelegramBot
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags
Nothing to show
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
- Local
- Codespaces
HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.
Как создать бота в Telegram бесплатно | Бесплатный чат бот Телеграмм
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
08bd03a Mar 7, 2022
Git stats
Files
Failed to load latest commit information.
Latest commit message
Commit time
README.md
Бот для телеграмма с ИИ
Бот разработан в процессе прохождения трёхдневного интенсива «Чат-бот с искусственным интеллектом на Python» от Skillbox.
Бот обучен по датасету dataset_for_bot.json , предоставленным в процессе прохождения интенсива.
Структура данных, по которым обучается бот, выглядит следующим образом:
BOT_CONFIG = < # Намерения пользователя «intents»: < # желание поздороваться «hello» : < «examples» : [«Привет», «Здарова», «Добрый день», «Здрасте», «Здравствуйте», «Доброго времени суток»], «responses» : [«И тебе привет, человек», «Привки», «Привет»] >, # прощание «bye» : < «examples» : [«Пока», «До свидания», «Досвидос», «Покасики», «Прощай», «Покедова»], «responses» : [«До скорых встреч!», «До свидания», «Пиши, если что»] >, # как дела «how are you» : < «examples» : [«Как дела», «Как делишки», «Че как», «Что делаешь», «Чем занят»], «responses» : [«Отвечаю на глупые вопросы», «Смотрю видосики», «Не разговариваю с тобой»] > >, «failure_phrases» : [«Ничего не понял», «Я не знаю такого», «Спроси что-нибудь попроще»] >
В общих чертах: При получении сообщения (примеры сообщений — examples ), бот пытается определить намерение ( intent ) и выдаёт один из запрограммированных вариантов ответа ( responses ).
Бот реально крутой можно заработать голду бесплатно В телеграмме Ник бота: @Lusiano6_bot
- Полученный текст сообщения приводится к нижнему регистру, а также отбрасываются все лишние символы, кроме букв и пробелов.
- Далее с помощью функции nltk.edit_distance(text1, text2) ищется разница в количестве букв между полученным сообщением с запрограммированными вариантами ( examples ). Количество букв нормализируется относительно средней длины текстов, и если они совпадают не менее, чем на 40 процентов, то считается, что намерение определено.
- Если намерение определить не удалось, то запускается обученная модель. На основе векторизации текстов она пытается подобрать намерение.
- По определенному намерению выдается один из запрограммированных ответов.
Структура проекта
В папке Files расположены:
- dataset_for_bot.json — набор данных для обучения бота;
- bot_model.bin — обученная по датасету модель;
- bot_vectorizer.bin — векторайзер для работы модели.
В корневой папке:
- main.py — основной файл;
- model_training.py — модуль для обучения модели по датасету, запускается только если отсутствует файлы bot_model.bin , bot_vectorizer.bin ;
- strings.py — переменные, в которых хранятся пути к файлам.
Установка и настройка
- /newbot — команда для регистрации бота в тг
- после этого будет предложено написать имя бота, например MyFirstPythonBot
- дальше нужно выбрать username бота, то есть ссылку, по которой он будет доступен, например MyFirstPython_bot (такое имя выбрать не получится, т.к. оно уже занято, необходимо придумать уникальный username)
Далее создайте в папке проекта файл token.txt и поместите туда токен для работы телеграм бота.
P.s. при сохранении на GitHub файл token.txt загружаться не будет, так как он добавлен в .gitignore . Это сделано для безопасности, чтобы никто не мог воспользоваться Вашим ботом.
Также для работы бота необходимо иметь установленную библиотеку python-telegram-bot. Для её установки воспользуйтесь командой: pip install python-telegram-bot
Источник: github.com
Делаем бот для обратной связи в Telegram
Очень полезный помощник для администратора канал в Telegram. Позволяет общаться с подписчиками канала. Все диалоги в одном окне. Возможность использовать весь функционал Телеграм для получения обратной связи.
Вариант бота на Node.js описан в отдельной статье
Начинаем работать
Данные от Bot API приходят в формате application/json, поэтому доступа к ним через массив $_POST нет, и брать их будем в «сыром», необработанном виде через ‘php://input’ используя встроенную функцию PHP file_get_contents(). В работе мы будем использовать кодировку UTF-8, это требование Telegram Bot API. Определим ее в начале скрипта index.php. Создадим класс Bot, для начала добавим ему два приватных свойства и один публичный метод. Очень часто я в коде буду использовать в качестве условного оператора тернарный оператор.
init(‘php://input’); // Класс Bot class Bot < // токен API private $botToken = «34069ХХХХ:XXXXXXXXXXXX-XXXXXXXXXXXXKVW3qILFpY»; // Ваш ID Telegram private $adminId = 123456789; // инициализируем объект класса public function init($data) < >> ?>
Создадим еще один метод, сделаем его приватным т.к. он нужен нам только внутри класса, вызываться из вне как публичный метод init() он не будет. Его задача будет преобразовывать через функцию json_decode() преданные ему данные из JSON в ассоциативный массив, назовем его getData() .
Для отладки можно создать метод, который будет записывать в файл все результаты работы метода getData(). Это очень удобно, ведь можно посмотреть какую информацию отправляет нам Bot API. На входе он принимает результат метода getData(). Вызывать метод можно вот так: $this->setFileLog($data);
Находим наш бот в Telegram и запускаем его. Бот примет нашу команду Strat/Старт, обработает и запишет результат в файл. Теперь мы можем рассмотреть содержимое файла.
Array ( [update_id] => 22918823 [message] => Array ( [message_id] => 1 [from] => Array ( [id] => 123456789 [is_bot] => [first_name] => Name [last_name] => Surname [language_code] => ru ) [chat] => Array ( [id] => 123456789 [first_name] => Name [last_name] => Surname [type] => private ) [date] => 1512554545 [text] => /start [entities] => Array ( [0] => Array ( [offset] => 0 [length] => 6 [type] => bot_command ) ) ) )
Как видно из содержимого, приходит много служебной информации.
Сейчас нас интересует элемент массива $data[‘message’] , который тоже является массивом и содержит в себе информацию, с которой предстоит работать. Проверяя наличие нужных нам ключей в массиве, мы можем определить какой тип данных был отправлен боту. Для данного бота важно определить кто написал, ведь от этого зависит куда направлять сообщение. У нас предусмотрено две роли: администратор и пользователь. Есть еще один участник — это сам бот. Мы его будет определять по специальному флагу, но это чуть позже. * * *
Мои первые ошибки
После создания этого бота в Телеграм добавлена возможность отключения пользователям пересылки, в этом случае бот не может работать в предложенном варианте. Решение этой проблемы не сложное. Обновление скоро будет на сайте.
Решение пришло из официальной документации
Источник: imakebots.ru