Бот не работает в Телеграмме после старта

Содержание

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.

TelegramBot / Api Public

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Бот не отвечает на сообщения в группе #163

Nerossoul opened this issue Jul 14, 2018 · 14 comments

Бот не отвечает на сообщения в группе #163

Nerossoul opened this issue Jul 14, 2018 · 14 comments
Nerossoul commented Jul 14, 2018 •

Как научить бота отвечать на сообщения в группе.

$bot->on( function($Update) use ($bot) < $message = $Update->getMessage(); $mtext = $message->getText(); $cid = $message->getChat()->getId(); $updateId = $Update->getUpdateId();$bot->sendMessage($message->getChat()->getId(), «text»); if(mb_stripos($mtext,»hi») !== false)< $bot->sendMessage($message->getChat()->getId(), $updateId); > else < $bot->sendMessage($message->getChat()->getId(), «вы сказали: «.$mtext); > >, function($message) use ($name) < return true; // когда тут true — команда проходит >);`

вот эта функция прекрасно работает если мы пишем на прямую боту. то есть вся логика работает отлично. но если бота добавить в группу то он не реагирует на уже на эти команды. я так понимаю что когда бот находится в группе функция on не вызывается. чем тогда её заменить? или как поравить код чтоб все работало?

/strat — запускает Telegram бота каждый раз! Обновление в BotHelp

The text was updated successfully, but these errors were encountered:

Источник: github.com

и особенности разницы версий v 13 и 20

Ошибки при старой версии python-telegram-bot до 13.0

Частая проблема в версиях любых фреймворков и библиотек касаются и

python-telegram-bot. Начиная с 13.0 версии изменились некоторые команды. А если использовать 20.0 версию python-telegram-bot, то их становится еще больше.

А как видно из названия «чатджипити» выдает старый код и в новой версии библиотеки он часто не работает. Самый простой способ, это понизить версию библиотеки с помощью

pip install python-telegram-bot==12.0.0b1 —upgrade

Либо сначала удалить старую и установить нужную:

pip uninstall python-telegram-bot

pip install python-telegram-bot==12

Ошибка ‘use_context’

Если у вас возникла подобная ошибка:

Еще по теме:  Во сколько оценивается Телеграмм

updater = Updater(bot=bot, use_context = True)

TypeError: Updater.__init__() got an unexpected keyword argument ‘use_context’

PS E:xxxxxxxx> YOUR TOKEN HERE»,use_context=True)

updater = Updater(«YOUR TOKEN HERE»)

Но как правило на этом не закончатся ошибки.

Ошибка ‘update_queue’

Если у вас возникла подобная ошибка:

Traceback (most recent call last):

File «E:xxxxxxxxbot.py», line 113, in

TypeError: Updater.__init__() missing 1 required positional argument: ‘update_queue’

Ошибка возникает из-за того, что в версии `python-telegram-bot` 13.0.0 и выше, конструктор класса `Updater` не принимает аргумент `token`. Вместо этого, токен должен быть передан в качестве аргумента при создании объекта `telegram.Bot`.

Для решения этой проблемы, вам нужно изменить код в файле `gobot.py`, чтобы передать токен при создании объекта `telegram.Bot`, а затем передать этот объект в качестве аргумента при создании объекта `Updater`.

Вот пример кода, который вы можете использовать:

from telegram.ext import Updater, CommandHandler

# Здесь вы можете определить переменную, содержащую токен вашего бота

# Создаем объект telegram.Bot с использованием токена

# Создаем объект Updater, передавая ему объект bot в качестве аргумента

updater = Updater(bot=bot, use_context=True)

# Определяем обработчик команды /start

def start(update, context):

context.bot.send_message(chat_id=update.effective_chat.id, text=»Hello, World!»)

# Регистрируем обработчик команды /start

Обратите внимание, что в этом примере мы передаем объект `context` в функцию обработчика команды `start`, а затем используем его для отправки сообщения. Это связано с тем, что в версии `python-telegram-bot` 13.0.0 и выше, объект `context` используется вместо объекта `telegram.ext.CallbackContext`.

Проблема решена

Проблема решена следующим способом:

# удаляем установленую версию

pip uninstall python-telegram-bot

# ставим последнюю многопоточную версию python-telegram-bot

pip install python-telegram-bot==13.15 -U

В некоторых случаях поможет установка с другими параметрами:

python3 -m pip install python-telegram-bot==13.15 -U

pip install python-telegram-bot==13.15

Вывод

Основная разница между версиями 13.0 и 20.0 заключается в том, что версия 20.0 включает множество новых функций и улучшений, которые были отсутствуют в версии 13.0. Рассмотрим плюсы и минусы каждой версии.

1. Имеет достаточный набор функций для большинства задач, связанных с созданием телеграм-ботов.

2. Устойчивая версия с множеством постоянных обновлений.

3. Используется широким сообществом и обладает известной документацией.

1. Некоторые функции в ней были устаревшими, а определенные улучшения и функции, которые были включены в более новые версии, отсутствуют.

2. Необходимость использования множества дополнительных сторонних библиотек и плагинов для реализации некоторых функций.

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

2. Многопоточность, которая избавляет разработчиков ботов от необходимости заботиться о многопоточности вручную.

3. Встроенные функции контроля версий.

1. Некоторые функции могут не работать так, как ожидалось, в случае если разработчик не обновит свой код к новым API.

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

Еще по теме:  Как включить камеру у обоих в Телеграмме при звонке

Таким образом, при выборе между версиями 13.0 и 20.0 нужно руководствоваться необходимостью реализации конкретной функции или набора функций. Если вам нужен базовый набор функций, то версия 13.0 подойдет. Если вы хотите использовать более новые функции и усовершенствования, то следует использовать версию 20.0.

Источник: 7bd.ru

Как разместить Telegram-бота на сервере?

Уже не первый раз меня спрашивали о том, как разместить своего бота на сервере и запустить его. В этой статье, я постараюсь коротко и ясно объяснить об этом. Но делать я это буду на бесплатном хостинге — Heroku.

  1. Создание бота
  2. Размещение бота на сервере Heroku
  3. Запуск бота на сервере Heroku
  4. Размещение бота на своём сервере
  5. Запуск бота на своём сервере

Я разбил статью на 5 глав. Как я сказал ранее, статья будет короткой. И с помощью этой навигации будет проще ориентироваться по требуемой информации.

Создание бота

Статью о том, как написать своего Telegram-бота на NodeJS я уже писал. Думаю я объяснил там всё достаточно понятно. Изучить её, если у вас еще нету бота и вы хотите его разработать на NodeJS. Если вы написали своего бота не на JavaScript, то можете пропускать эту часть и приступать ко второй главе.

Размещение бота на Heroku

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

Особой разницы в размещении бота на Heroku или на отдельном сервере нету. Тут всё достаточно просто.

  1. Зарегистрируйтесь на сайте Heroku
  1. Войдите в свой аккаунт и создайте первый проект, нажав на «Create new app».
  1. Придумайте название своему проекту. Название должно быть уникальным. Выбор региона не принципиален.
  2. После создания проекта, вам будет предложены варианты деплоя (размещения) вашего проекта на Heroku.

Тут есть несколько вариантов. Я опишу только первые два.

  • Heroku Git — с помощью CLI от Heroku, вы можете очень просто разместить своего бота на сервере Heroku.
  • GitHub — вы можете подключить свой аккаунт GitHub и склонировать ваш репозиторий на сервер Heroku.

Я буду пользоваться первым вариантом.

Следуя простой инструкции, указанной в разделе «Deploy», можно загрузить свой проект на сервер Heroku.

  1. Скачайте Heroku CLI для работы с Herokue сервером.
  2. Войдите в аккаунт Heroku через CLI.

heroku login

  1. Зайдите в папку вашего проекта через консоль (терминал).

cd my-telegram-bot

  1. И выполните эти две команды по очереди. (Если вы уже инициализировали Git, то первую команду выполнять не надо).

heroku git:remote -a archakov-im-telegram-bot

Первая — инициализирует Git в вашей папке. Вторая — установит ссылку на репозиторий Heroku, для деплоя (размещения) вашего проекта на сервере.

Когда внесли все правки и убедились, что всё должно работать нормально, создайте в папке с вашим проектом — Procfile. Без расширения, просто — Procfile.

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

Еще по теме:  Как узнать что Телеграмм просматривается

web: node index.js

В моем случае, это npm start . Так как у меня код написан на ES6, мне нужно конвертировать ES6 в ES5 с помощью Babel. И только после этого, у меня запускается команда запуска бота, типа: node index.js .

Запуск бота на сервере Heroku

Почти готово. Вам осталось теперь просто запушить вашего бота на сервер Heroku и запустить бота.

git commit -m «init»
git push heroku master

Если вам лень каждый раз вбивать эти команды, пропишите в package.json в scripts, следующую команду:

«deploy»: «git add . git commit -m ‘fix’ git push heroku master»

Если же бот не запустился после пуша, выполните последнюю команду для запуска бота на Heroku и готово!

heroku ps:scale web=1

Размещение бота на своём сервере

Тут тоже достаточно всё просто. Если вы не хотите публиковать своего бота на GitHub’e, вы можете использовать BitBucket.

Регестрируемся. Создаем репозиторий, нажав на плюсик слева.

Называем репозиторий как хотим, тут всё так же, как и на GitHub.

После чего, заходим так же в свой проект с ботом. И добавляем в Git, ссылку на этот репозиторий.

cd my-telegram-bot

У вас должна быть другая ссылка на репозиторий. Кликните на «I have an existing project» и ниже указана команда с вашим репозиторием.

Пушим всё на BitBucket репозиторий. На своём сервере клонируем репозиторий с BitBucket и любые изменения просто скачиваем командой:

git pull origin master

Запуск бота на своём сервере

После того как вы склонировали репозиторий и установили все зависимости на вашем сервере, вам остается запустить бота в фоновом режиме — Запуск Node.js в фоновом режиме.

nohup nodejs index.js > /dev/null 2>
ps aux | grep node

Или же есть еще два варианта запуск бота:

  1. Nodemon — следит за любыми изменениями в файле и перезапускает бота (скрипт).
  2. Docker — более сложный, но грамотный вариант для запуска бота. При правильной настройке Docker-контейнера, можно поставить автоматически запуск при фейле бота.

Если у вас бот не запустился, проверьте логи, командой heroku logs .

Если вы рассчитываете на халяву от Heroku и ожидаете, что ваш бот будет хоститься на их сервере, то мне придётся вас огорчить. Ваш бот будет работать 30 секунд, после чего отключается. Переодично включается, когда как. В общем, Heroku подходит для теста бота в «боевом режиме».

Это уже 6 или 7 статья по разработке телеграм ботов. Думаю, мой блог скоро превратится в «блог о программировании телеграм ботов». Что самое странное, я написал больше 55 статей про разные темы, но 90% запросов из поисковых систем, связаны с телеграм ботами. Тем не менее приложу к этой статье несколько своих статей по Telegram.

  • NodeJS: Делаем кнопки в Telegram API (inline-keyboards)
  • Полезные чаты Telegram для веб-разработчиков
  • Node.JS: Делаем своего Telegram бота
Archakov Dennis

Fullstack Developer (ReactJS, NodeJS) / UI Designer.

Источник: archakov.im

Рейтинг
( Пока оценок нет )
Загрузка ...