Подключение Telegram Bot (новая версия)

Инструкция этой темы уже давно устарела, данная тема является на данное время актуальной по установке.


Что нужно?

  1. Сервер (VDS/VPS или ПК с доступом в интернет).

  2. Телеграм бот (будет в процессе темы).

  3. Хоть немного IQ для понимания темы.

1. Создания Телеграм бота

  1. Перейдите в Телеграм бота @BotFather.

  2. Введите команду /newbot и начните создания своего бота. После создания обязательно скопируйте токен (оно нам пригодится в процессе создания бота).

Установка самого бота

Windows
  1. Установите Python на свой ПК.

  2. Перейдите на репозиторий бота и скачайте бота как архив (Code > Download ZIP).

  3. Распакуйте архив в нужный вам каталог (сохраните путь к каталогу, оно будет нам нужно).

  4. Откройте Командную строку и перейдите в каталог куда вы распаковали бота (это уже зависит от диска куда вы его сохранили, если диск по умолчанию C: и бот тоже сохранен в диске C:, то ваша команда cd <путь до каталога бота>, в ином случае гугл вам на помощь).

  5. Введите команду pip install poetry, а после него poetry install.

Linux
  1. Установите Python (apt install python).

  2. Проверьте работоспособность PIP (введите pip, если пишет что команда не найдена, установите его командой apt install python-pip).

  3. Установит GIT (apt install git).

  4. Перейдите в нужный вам каталог, где должен располагаться бот, а после введите команду

git clone https://github.com/teanus/Telegram-RCON-Bot
  1. Введите команду mv Telegram-RCON-Bot/* .

  2. Введите команду pip install poetry, а после него poetry install.

Настройка бота

Сперва целиком настройте файл config.yaml как вам нужно.

Теперь создайте файл .env (да, да, без названия с расширением .env). Заполните в него следующий шаблон:

TOKEN=18293929:jakaodhs

rcon_host=127.0.0.1
rcon_port=19132
rcon_password=mypass

postgre_username=dinnerbone
postgre_password=tynaevPass
postgre_host=127.0.0.1
postgre_port=0

TOKEN - Токен Телеграм бота.
rcon_host - Айпи сервера.
rcon_port - Порт сервера.
rcon_password - Пароль от RCON.

Если вы поставили PostgreSQL в качестве БД (в конфиге)

postgre_username - Имя пользователя.
postgre_password - Пароль от пользователя.
postgre_host - Айпи адрес где расположен БД.
postgre_port - Порт БД.

Запуск бота

Как только ваш бот полностью готов, пора его запускать!

Windows

Не отходя от командной строки с каталогом бота, вы должны ввести команду python bot.py (или же bot.py).

Всё :slight_smile:
(если командная строка закроется, то и бот перестанет работать)

Linux
  1. Установите Screen (apt install screen).

  2. Введите команду screen -S rconbot (если вы ушли с каталога бота, вернитесь туда обратно).

  3. Введите команду python bot.py.

(если вы вышли со сессии бота, вернуться туда можно командой screen -r rconbot).

Завершение

Мои поздравления, ваш собственный RCON Телеграм бот готов!

2 лайка

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

Это мой бот, лол

image

А, кек, не заметил

эх, а только похвалил диннер бона

Динер боне красавчик

Ну об этом я узнал ещё спустя месяц, когда начал интересоваться Aiogram

@Ricano707

1 лайк

Этот видос не помог, так как данная функция и так была включена. Я так понимаю проблема именно в windows server который не может создавать файлы без названия.
решил так, создал файл .env на виртуальной машине с windows 10 и перекинул на сервак

по сути в powershell тоже можно было

Да, можно создать с помощью команды. Но в вопросе не был указана server версия, ответ и был дан на тот вопрос, который был задан)

Но тут я сразу показал всем, потому что честно, данный вопрос мне часто залетал в тг на счет этого.

даа, за ответ спасибо, без него бы не догадался что проблема в системе.

Надеюсь ты уже закончил с ботом?

не, я решил позже вопрос задать чтоб вы немного отдохнули.

вот такую ошибку выдаёт

Telegram-RCON-Bot-master>python bot.py
Traceback (most recent call last):
File “C:\Users\Администратор\Desktop\Telegram-RCON-Bot-master\bot.py”, line 17, in
from aiogram.utils import executor
ModuleNotFoundError: No module named ‘aiogram’

Могу сказать в дополнение что при команде poetry install выдаёт ошибки, возможно из-за этого

pip install -U aiogram

Учитесь хотя-бы пользоваться башкой и юзать гугол

1 лайк

Вариантов 3

  1. Либо ты криво установил Poetry

  2. Либо инет слабый

  3. Либо установке что-то мешает¯⁠\⁠_⁠(⁠ツ⁠)⁠_⁠/⁠¯


Да и скинь эту ошибку

poetry install
Installing dependencies from lock file
Warning: poetry.lock is not consistent with pyproject.toml. You may be getting improper dependencies. Run poetry lock [--no-update] to fix it.

Package operations: 18 installs, 0 updates, 0 removals

• Installing frozenlist (1.3.3): Failed

ChefBuildError

Backend subprocess exited when trying to invoke build_wheel


  • Accelerated build *

running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-312
creating build\lib.win-amd64-cpython-312\frozenlist
copying frozenlist_init_.py → build\lib.win-amd64-cpython-312\frozenlist
running egg_info
writing frozenlist.egg-info\PKG-INFO
writing dependency_links to frozenlist.egg-info\dependency_links.txt
writing top-level names to frozenlist.egg-info\top_level.txt
reading manifest file ‘frozenlist.egg-info\SOURCES.txt’
reading manifest template ‘MANIFEST.in’
warning: no previously-included files matching ‘.pyc’ found anywhere in distribution
warning: no previously-included files matching '
.pyd’ found anywhere in distribution
warning: no previously-included files matching ‘.so’ found anywhere in distribution
warning: no previously-included files matching '
.lib’ found anywhere in distribution
warning: no previously-included files matching ‘.dll’ found anywhere in distribution
warning: no previously-included files matching '
.a’ found anywhere in distribution
warning: no previously-included files matching ‘*.obj’ found anywhere in distribution
warning: no previously-included files found matching ‘frozenlist*.html’
no previously-included directories found matching ‘docs_build’
adding license file ‘LICENSE’
writing manifest file ‘frozenlist.egg-info\SOURCES.txt’
copying frozenlist_init_.pyi → build\lib.win-amd64-cpython-312\frozenlist
copying frozenlist_frozenlist.pyx → build\lib.win-amd64-cpython-312\frozenlist
copying frozenlist\py.typed → build\lib.win-amd64-cpython-312\frozenlist
running build_ext
building ‘frozenlist._frozenlist’ extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: Microsoft C++ Build Tools - Visual Studio

at ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\poetry\installation\chef.py:164 in _prepare
160│
161│ error = ChefBuildError(“\n\n”.join(message_parts))
162│
163│ if error is not None:
→ 164│ raise error from None
165│
166│ return path
167│
168│ def _prepare_sdist(self, archive: Path, destination: Path | None = None) → Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with frozenlist (1.3.3) not supporting PEP 517 builds. You can verify this by running ‘pip wheel --no-cache-dir --use-pep517 “frozenlist (==1.3.3)”’.

• Installing multidict (6.0.4): Failed

ChefBuildError

Backend subprocess exited when trying to invoke build_wheel


  • Accelerated build *

running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-312
creating build\lib.win-amd64-cpython-312\multidict
copying multidict_abc.py → build\lib.win-amd64-cpython-312\multidict
copying multidict_compat.py → build\lib.win-amd64-cpython-312\multidict
copying multidict_multidict_base.py → build\lib.win-amd64-cpython-312\multidict
copying multidict_multidict_py.py → build\lib.win-amd64-cpython-312\multidict
copying multidict_init_.py → build\lib.win-amd64-cpython-312\multidict
running egg_info
writing multidict.egg-info\PKG-INFO
writing dependency_links to multidict.egg-info\dependency_links.txt
writing top-level names to multidict.egg-info\top_level.txt
reading manifest file ‘multidict.egg-info\SOURCES.txt’
reading manifest template ‘MANIFEST.in’
warning: no previously-included files matching ‘*.pyc’ found anywhere in distribution
warning: no previously-included files found matching ‘multidict_multidict.html’
warning: no previously-included files found matching ‘multidict*.so’
warning: no previously-included files found matching ‘multidict*.pyd’
warning: no previously-included files found matching ‘multidict*.pyd’
no previously-included directories found matching ‘docs_build’
adding license file ‘LICENSE’
writing manifest file ‘multidict.egg-info\SOURCES.txt’
C:\Users\Àäìèíèñòðàòîð\AppData\Local\Temp\1\tmpeks3mets.venv\Lib\site-packages\setuptools\command\build_py.py:207: _Warning: Package ‘multidict._multilib’ is absent from the packages configuration.
!!

      ********************************************************************************
      ############################
      # Package would be ignored #
      ############################
      Python recognizes 'multidict._multilib' as an importable package[^1],
      but it is absent from setuptools' `packages` configuration.

      This leads to an ambiguous overall configuration. If you want to distribute this
      package, please make sure that 'multidict._multilib' is explicitly added
      to the `packages` configuration field.

      Alternatively, you can also rely on setuptools' discovery methods
      (for example by using `find_namespace_packages(...)`/`find_namespace:`
      instead of `find_packages(...)`/`find:`).

      You can read more about "package discovery" on setuptools documentation page:

      - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html

      If you don't want 'multidict._multilib' to be distributed and are
      already explicitly excluding 'multidict._multilib' via
      `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
      you can try to use `exclude_package_data`, or `include-package-data=False` in
      combination with a more fine grained `package-data` configuration.

      You can read more about "package data files" on setuptools documentation page:

      - https://setuptools.pypa.io/en/latest/userguide/datafiles.html


      [^1]: For Python, any directory (with suitable naming) can be imported,
            even if it does not contain any `.py` files.
            On the other hand, currently there is no concept of package data
            directory, all directories are treated like packages.
      ********************************************************************************

!!
check.warn(importable)
copying multidict_init_.pyi → build\lib.win-amd64-cpython-312\multidict
copying multidict\py.typed → build\lib.win-amd64-cpython-312\multidict
running build_ext
building ‘multidict._multidict’ extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: Microsoft C++ Build Tools - Visual Studio

at ~\AppData\Local\Programs\Python\Python312\Lib\site-packages\poetry\installation\chef.py:164 in _prepare
160│
161│ error = ChefBuildError(“\n\n”.join(message_parts))
162│
163│ if error is not None:
→ 164│ raise error from None
165│
166│ return path
167│
168│ def _prepare_sdist(self, archive: Path, destination: Path | None = None) → Path:

Note: This error originates from the build backend, and is likely not a problem with poetry but with multidict (6.0.4) not supporting PEP 517 builds. You can verify this by running ‘pip wheel --no-cache-dir --use-pep517 “multidict (==6.0.4)”’.