Как поставить vpn на telegram bot python
Перейти к содержимому

Как поставить vpn на telegram bot python

  • автор:

 

Telegram bot для начинающих с выгрузкой на сервер ubuntu

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

Юный падаван

Так как опыта в программировании у меня не было, пришлось идти путем проб и ошибок. Я перечитал огромное количество материалов, посвященных созданию телеграм ботов и у меня сложилось впечатление, что авторы чего-то не договаривают, либо я еще совсем юный подаван. Первое с чем я столкнулся, был вопрос: на каком ПО заняться разработкой бота — Windows или Linux? Windows был мне знаком с детства, но слишком частые обновления и монопольный консерватизм Windows подтолкнули меня к Linux, к тому же, при установке Ubuntu рядом с Windows, я допустил грубую ошибку в связи со своей неопытностью, установив Ubuntu на весь жесткий диск)

Через тернии к звездам

Еще одна проблема, с которой я столкнулся, это блокировка телеграм в России, то есть запросы не отправлялись на сервер telegram bot api.

Для начала работы нужно установить vpn на Ubuntu, я решил использовать vpn windscribe — хороший и бесплатный vpn, ссылка для установки rus.windscribe.com/guides/linux#how-to
Далее нужно установить Python

С ним уже в комплекте идет менеджер пакетов pip3.

Кстати, очень важная тема Виртуальная среда python . Виртуальная среда изолирует нужную версию для python и пакетов pip, так как все по умолчанию устанавливается глобально и при написании кода на python из-за различных версий пакетов может не запуститься код.
Для начала нужно установить виртуальную среду с помощью модуля venv
Для этого создадим директорию с любым название, в моем случае bots

Затем переходим в директорию bots

Устанавливаем виртуальную среду в каталог bots
Далее в каталоге bots создаем виртуальную среду

Следующий шаг — активируем ее

Итак, виртуальная среда готова, теперь установим пакет pyTelegramBotAPI в каталог bots

Теперь приступим к написанию кода, я использовал код из рипозитория gihub pyTelegramBotAPI.

Переходим в каталог бот и создаем файл с расширением в конце .py Я использую редактор NANO, вы можете использовать любой другой редактор, на ваше усмотрение)

Этот код возвращает то слово или команду, которую вы отправили боту. Где TOKEN нужно вставить «TOKEN» вашего бота.

Теперь нужно включить ваш vpn, лучше включить vpn в каталоге bots

Затем запустите бота с помощью команды

После этого бот должен заработать.

Для того, чтобы бот работал автономно и вам не приходилось все время сидеть с включенным пк, его надо загрузить на удаленный сервер. Для этого я использовал Ubuntu Server, главное чтобы он был расположен в другой стране, опять же из-за блокировки телеграм в РФ, я нашел vps стоимостью 3$, его достаточно для создания обыкновенного бота.

TeleBot на PYTHON

Screenshot_15.png

в Чем собственно вопрос: немного пришлось ковырять код, потому что исходник с статья вообще не работал, в итоге он запустился но выдает что подключение невезможно (неужели у жертвы должен быть vpn?)
скрин:
Посмотреть вложение 35586

если кто сталкивался, буду признателен за помощь

А ты канал зарегистрировал, токен получил ?

s unity
  • 04.12.2019
  • #3
Codeby Team
  • 04.12.2019
  • #4

Нет, он работает спокойно и без VPN.

Регистрируется бот на канале bot_father или как-то так он называется.

После этого, например, импортируется telebot.types
И в коде описывается токен и бот

Пишется декоратор к функции

Далее в бесконечном цикле запускается опрос бота

s unity
  • 04.12.2019
  • #5

Нет, он работает спокойно и без VPN.

Регистрируется бот на канале bot_father или как-то так он называется.

После этого, например, импортируется telebot.types
И в коде описывается токен и бот

Пишется декоратор к функции

Далее в бесконечном цикле запускается опрос бота

Codeby Team
  • 04.12.2019
  • #6
s unity
  • 04.12.2019
  • #7
Codeby Team
  • 04.12.2019
  • #8

Какая разница в каком формате ты его будешь запускать, хоть в bat его преврати, скрипт всё равно будет python.

Делать это необязательно, но, обычно, каждые 24 часа динамический IP адрес меняется и бот может падать.

Нет, никакого установщика не нужно, ты же через API работаешь.

s unity
  • 05.12.2019
  • #9
Codeby Team
  • 05.12.2019
  • #10

Речь не о случайных ошибках, а о том, что ему нужно как-то перезапускать себя после того, как изменился IP. Вот я о чём.
То, что он запускается, это точно, библиотека то рабочая.
Значит, проблема или в коде, или в подключении.
Именно из-за этого я тебе и рекомендовал запустить минимально-достаточный код, чтобы отсеять возможность ошибки в нём.

Не знаю, вроде нормально открывается.

 

s unity
  • 05.12.2019
  • #11
YouCouldBeWiser
Member
  • 07.12.2019
  • #12
s unity
  • 07.12.2019
  • #13
  • 07.12.2019
  • #14
Codeby Team
  • 07.12.2019
  • #15
  • 07.12.2019
  • #16
s unity
  • 08.12.2019
  • #17
  • 08.12.2019
  • #18
YouCouldBeWiser
Member
  • 08.12.2019
  • #19

Даёшь ему на вход большую пачку прокси с случайным выбором из неё + обработка ошибок, если прокси умер.

Так это же и есть серверная часть бота, насколько я понял по коду.

Кстати. ChatID, насколько помню, тут должен быть не канал, а чат с пользователем. Но не уверен. И еще соответствующую настройку надо посмотреть в BotFather вроде.
И. По поводу чата с пользователем. Чат должен начать именно пользователь. Бот начать чат не может, вылетит с ошибкой.

Ещё ‘и’. Не уверен, что сработает мультистарт на одном токене. И точно будет проблема с передачей команд конкретному экземпляру. Ответы, возможно, дойдут все. Или один. Или ещё что-то где-то отвалиться. Но это уже чисто мои домыслы, может быть всё будет работать.

Python + Telegram = bot

Решил немного погрузиться в изучение Python, в процессе поставил задачу отойти от стандартного Hello World и попытаться написать сразу простого бота для Telegram. В итоге, бот может отвечать на заданные фразы, присылать внешний ip адрес и делать снимок с камеры. Скажу сразу, код не идеальный, но в процессе отладки ни один котик не пострадал.

Для начала сразу оговорюсь писать будем на Python версии 3 и будем использовать модули для облегчения жизни нашего проекта.

Пишем мы на Ubunru 19.10, поэтому надо учитывать, что есть две версии установленного Python.

Установим PIP и необходимые пакеты:

PIP — система управления пакетами, которая используется для установки и управления программными пакетами.

pytelegrambotapi — нужен для работы с API Telegram

PySocks — прокси сервер, иначе бот не будет работать.

Как было указано выше, пишем мы на Ubuntu, поэтому в директории пользователя /home/users-name/ создаем файлы bot-file.py и config.py

Файл bot-file содержит код бота, а файл config необходим для конфигурации бота. В конфигурации необходимо будет указать список пользователей, которым разрешено взаимодействие с ботом.

Начнем с файла конфигурации, там все просто, необходимо просто указать id пользователя Telegram.

Переходим к файлу бота.

Разберем некоторые интересные моменты, на которые следует обратить внимание.

Прокси

В данном примере используется Socks 5 прокси:

Достаточно указать свои данные и запустить бот.

Token ID

В начале пытался брать Token из файла конфигурации, но бот так и не запустился. Пришлось оставить в коде, поэтому Token бота вписывать придется в сам код.

Авторизация

Для проверки пользователя используется функция проверки id пользователя из файла конфигурации. В случае успеха бот присылает сообщение и стикер, тоже самое в случае отказа.

Клавиатура

Красивые кнопочки любят все. ��

Второй горизонтальный ряд добавляется легко, просто пишем снова — keyboard1.row.

Прием документов и фотографий

Бот умеет сохранять документы и фотографии, которые скачиваются в папку received. Папку предварительно необходимо будет создать в профиле пользователя, где создавали файлы бота и файла конфигурации.

С вопросом получения картинки с камеры и внешнего ip адреса пришлось повозить подольше. Но в итоге через папку temp и вызов через bash wget все получилось.

Планировщик crontab

Бот запускается через планировщик задач, каждые пять минут происходит проверка запущенного процесса. Так как бот использует прокси и может произойти обрыв канала интернет, то повторный запуск бота не сможет произойти.

Для начала необходимо точно определить где и какая версия Python установлена.

В моем случае Python версии 3.7, поэтому в файле я буду указывать именно его.

Создаем bash скрипт для crontab

Не забываем проверить пути до бота и Python.

Делаем файл исполняемым:

Открываем планировщик и вносим задачу:

Делал под пользователем, не под root.

Проверить запустился ли бот, можно командой:

Должен будет выдать номер запущенного процесса, если строка пустая, то бот не запущен.

Заключение

В итоге получили бота, который в случае чего может и документ принять и фоточку с камеры наблюдения прислать. В интернете полно статей на данную тематику, есть и powershell боты и другие. Но мне было интересно решить именно такую задачу. В процессе эксплуатации буду наращивать потенциал бота.

Файлы примера бота можно скачать тут: python-bot

Если есть замечания по коду и его оптимизации, то буду рад вашим комментариям. Так как тема для меня слишком новая и код скорее всего далек от идеала!

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *