- Saved searches
- Use saved searches to filter your results more quickly
- License
- Dih5/adminbot
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Как я писал telegram бот с админкой на Django
- Предисловие
- Первая версия
- Вторая версия
- Развертывание
- Делаем Telegram бота с Админ-панелью и многими другими плюшками
Saved searches
Use saved searches to filter your results more quickly
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.
A python-implemented telegram bot to admin your server
License
Dih5/adminbot
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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?
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
Git stats
Files
Failed to load latest commit information.
README.md
A python-implemented telegram bot to admin your server.
The package deploys a telegram bot with the following capabilities:
- Remote python interpreter.
- Send matplotlib images. Yeah, plot a sine or two a send them to your mobile. You’ll be the soul of the party.
- Run shell commands.
- Use-related commands (disk use, check cpu-consuming processes).
- To install the last ‘stable’ version from pypi: pip install adminbot . Do not expect much stability in the API though.
- To install the last development version: pip install https://github.com/dih5/adminbot/archive/master.zip .
If you are a cool guy you’ll prefer to use python3 and pip3 instead, unless you are a cool Arch Linux user.
If you are new to telegram bots first check the official introduction and create a bot using the BotFather. Create a file following example.json, using your bot’s token. For the bot to answer your commands you must add your user id to the adminlist. Don’t worry if you don’t know it yet. Run the bot using adminbot example.json . If everything went right you should be able to talk to it in from your telegram client.
If you did not add your user id to the admin list you will see it in the console when the bot receives a message. Add it and restart the bot.
To finish the bot just SIGINT it (Ctrl-C). It takes a few seconds to stop.
I also made a Mathematica implementation of this sort of program. If you are interesented you may check it here.
About
A python-implemented telegram bot to admin your server
Как я писал telegram бот с админкой на Django
Привет! Хочу поделиться историей, как я писал telegram-бот на Python. Хоть это и супер банально, но решил сделать бот-витрину с возможностью просмотра товаров, добавления в корзину и подтверждением заказа.
Предисловие
Я не являюсь профессиональным разработчиком, и никогда не писал большие продакшн проекты хоть уже 6 лет работаю в IT. Я — тестировщик. Тестирую руками, пишу автотесты на C#, но при этом делаю домашние проекты.
Я три раза начинал реализовывать бот на C# но каждый раз погрязал в рутине, где нужно было создать 20 моделей, написать конвертеры, адаптеры, запись в базу и на самое веселое — написание логики, уже не хватало сил.
Первая версия
Все поменялось, когда я решил выучить Python. Бегло прочитал документацию, написал десяток строк кода в REPL и понял, что пора делать реальный проект.
Нашел в google несколько библиотек по работе с telegram bot api и остановился на python-telegram-bot. Она оказалась простой и понятной. Делаешь фильтр по сообщениям и передаешь callback метод, который будет вызван в случае совпадения фильтра. Внутри метода пишешь обработку сообщения, запись в базу, отвечаешь в чат.
Так как я не знал как принято писать на Python, создавать модели или использовать dict, писать отдельные функции или методы в классах, то просто начал делать. Быстро и просто. Через неделю первая версия бота была готова.
Что получилось? Для хранения данных использовал mongodb. Ну потому, что стильно, модно, молодежно. Клиент к базе определил как будут храниться данные. Так как в mongo было легко писать dict, то я передавал данные в словаре. Отдельно писал функции для обработки этих данных. Никаких классов и объектов.
Запаковал проект в докер контейнер и запустил на digital ocean.
Вторая версия
Первая версия получилась рабочая, но у нее было много минусов. Добавление данных в базу осуществлялось через Robo 3T клиент, что не очень то удобно. Агрегация данных с разных коллекций в no sql базе тоже доставляла хлопот. Ну и в конечном итоге сложновато оказалось работать со словарями, каждое переименования поля или изменение типа вываливалось ошибкой в рантайме.
Я понимал, что хочу чтобы была админка для бота. Подумал, что можно написать ее на django. На GitHub лежит такой проект RealWorld example app, где можно посмотреть как пишут реальное проекты на популярных технологиях. Посмотрел код там, почитал try a tutorial по django и понял, что админку не нужно писать. В django есть возможность подключать уже существующие модули к проекту, которые называются APP. Один из таких app называется django.contrib.admin как раз и есть админ панель, которую можно подправить под свои нужды.
Плюсы использования django заключались в том, что я мог использовать один и тот же код для бота и для админки. В этом случае я решил поменять базу на реляционную и начал с самого простого — sqlite. Django models поддерживает ее из коробки и мне почти не пришлось писать дополнительного кода. Просто создал модели с нужными полями и задал отношения между ними.
И на этом этапе все было здорово, кроме одной вещи: Django — это веб фреймворк и рассчитан на то, что пользователь делает http запрос, и синхронно получает сгенерированный ответ. А часть проекта с ботом работает не так. В ней должен запуститься python процесс и постоянно слушать обновления от telegram.
Ответ на вопрос как это сделать, я получил в чате Hexlet в #python. Как подсказал Aleksei Pirogov в django есть понятие management commands. Это такие же команды как makemigrations python manage.py makemigrations или python manage.py createsuperuser только ваши собственные. Они могут работать вечно, запускаются командой python manage.py и не стартуют веб сервер, хотя при этом могут использовать те же модели и конфигурации что и основное веб приложение. Главное — разместить команду в правильной директории и добавить app в INSTALLED_APPS.
Развертывание
В конечном итоге получился один django проект с несколькими apps внутри. App с ботом запускается с помощью команды python manage.py startbot , а админ панель с помощью python manage.py runserver 0.0.0.0:8000 . Все это пакуется в один docker контейнер, но а в docker-compose запускаю их как два отдельных сервиса с разными командами. Сервисы делят одну базу на двоих так как это sqlite файл, который добавляется как volumes к сервису.
Надеюсь вам было полезно и познавательно. Для себя же я открыл python и django как инструмент для быстрой реализации идей, без заморочек и лишнего кода.
Если вам интересно следить за дальнейшим развитием этого проекта, то в telegram канале я публикую маленькие заметки по этой теме.
Делаем Telegram бота с Админ-панелью и многими другими плюшками
Всем привет! Так как это моя первая статья и я не знаю что да как делать, буду писать как знаю.
Сегодня хотелось бы Вам рассказать как легко сделать своего Telegram бота на очень популярном Языке Программирования — Python. Статья будет в двух частях, в первой мы установим Python и все необходимые компоненты и напишем самого простого бота, во второй Напишем основную логику бота. Если Вы не новичок можете листать вниз, так как тут будет много знакомой вам информациию.
Не буду томить долгим вступлением, давайте начнем!
И так первое что мы должны сделать это составить план нашего бота. В план будут входить: какие функции будет выполнять бот и собстна все.
Как будет выглядеть наш бот со стороны пользователя:
- Пользователь заходит в бота и пишет ему команду «/start»
- Попадает в главное меню бота
- Пользователь выбирает действие на клавиатуре кнопок
Полностью функционал боа не нужно расписывать так как это будет очень долго и в дальнейшем бесполезно
Теперь представим что будете видеть Вы как Админ и Владелец этого бота:
- Вы заходите в бота написав ему команду «/start»
- Попадаете в главное меню Админ-панели
- Выбираете действие на клавиатуре
Вот на этом наш план бота заканчивается, приступаем к части установки Python
- Заходим на сайт python.org
- Нажимаем на вкладку «Download»
- Листаем в самы низ и скачиваем последнюю версию Python (на данный момент это Python 3.10)
- У Вас начнеться установка Установшика Python. Когда он скачается откройте его и у Вас должно открытся такое окно:
- Обязательно сделайте галочку рядом с «Add Python 3.10 to PATH»
- После установки появится возможность отключить ограничение длины MAX_PATH . В системах Linux этих ограничений нет. Проигнорировав этот пункт, вы можете столкнуться с проблемой совместимости в будущем. Код созданный на Linux не запустится на Windows.
- Вот и все, у Вас теперь есть Python
Теперь давайте приступим к установке, но уже бибилиотек, а не ЯП
- Скачайте файл get-pip.py и сохраните у себя на компьютере.
- Откройте командную строку и перейдите в папку, в которой сохранен get-pip.py .
- В командной строке выполните команду: python get-pip.py или python3 get-pip.py .
- PIP установлен 🎉!
Создайте новую папку где будете разрабатывать бота
Зайдите в командую строку, зайдите через нее в папку для разработки и введите команду установки библиотеки aiogram
И давайте наконец приступим к коду:
- Для начала откроем среду разработки Python
- IDLE в Windows находится в меню «Пуск» → «Python 3.10» → «IDLE«. Также можно быстро найти его через «Поиск» около меню «Пуск«, набрав в поле поиска «IDLE»:
- В IDLE есть возможность полноценно работать с файлами — просматривать, редактировать, создавать новые. Чтобы создать новый файл, выберите «File» -> «New File» (или Ctrl + N). Откроется новое окно:
- Сохраним файл в папку куда мы устанавливали библиотеку
- Все готово для написания кода
import logging # эта библиотека идет вместе с python from aiogram import Bot, Dispatcher, executor, types # импортируем aiogram
API_TOKEN = 'ТОКЕН' # Токен logginglogging.basicConfig(level=logging.INFO) # Initialize bot and dispatcher bot = Bot(token=API_TOKEN) dp = Dispatcher(bot)
@dp.message_handler(commands=['start', 'help']) async def send_welcome(message: types.Message): await message.reply("Привет! Это простейший бот на aiogram") # отвечает на сообщение
@dp.message_handler() async def echo(message: types.Message): await message.answer(message.text)
if __name__ == '__main__': executor.start_polling(dp, skip_updates=True)
Вот и все теперь осталось получить токен бота и вставить его в переменную API_TOKEN
Получение Токена Для Бота
- Открываем @BotFather и запускаем его (Старт/Start).
- В списке предложенных команд выбираем: /newbot — create a new bot , нажимаем на эту команду, или вводим ее вручную в поле для ввода сообщений.
- Вам предложат указать как будут звать бота, в дальнейшем название бота можно будет поменять. Вводите название в поле для ввода сообщений.
- Далее вам предложат указать имя, по которому бот будет доступен для пользователей. Имя пишите, используя латинский алфавит, цифры и нижнее подчеркивание. Еще одно важное условие — имя должно оканчиваться на «bot». Можно также с большой буквы «Bot», или «_bot» или «_Bot».
После этих действий Вы получите сообщение с токеном бота
Его то мы и вставляем в переменную API_TOKEN
Если Вы выполнили все те шаги что описаны выше, у вас все успешно заработает и Вы молодец, если же у вас какие-то проблемы, пишите мне в Telegram@derkown
Вот и все! Спасибо за прочтение, в скором времени появиться вторая часть. Опять же мой Telegram рад приветсвовать вас. Удачи и Пока!