Я создал простого чат-бота с помощью Microsoft Bot Framework и интегрировал его с Telegram. Он отлично работает, когда я пишу ему в частном порядке, но всякий раз, когда я помещаю его в группу с моими друзьями, он не отвечает, даже когда я его упоминаю. /setjoingroups включен, как и /setprivacy .
Matt G 15 Май 2016 в 23:25
3 ответа
Лучший ответ
Когда вы настраивали своего бота в Telegram, вы сделали его встроенным ботом? По моему опыту, встроенные боты не могут участвовать в групповых чатах, но могут писать личные сообщения. Если нет, откройте проблему с GitHub здесь, и мы ответим на нее.
Eric Anderson 16 Май 2016 в 17:21
Сначала убедитесь, что это не вызвано самим Microsoft Bot. Тогда для всех обычных ботов —
Всегда добавляйте бота Telegram в группу через информационное окно бота, вместо того, чтобы приглашать бота в группу через информационное окно группы.
Это явная ловушка для новичков. Я удивлен, что Telegram не заметил этого в своей документации.
Что делать если бот не запустился? | BotHelp
xpt 30 Янв 2019 в 03:26
Помимо всех других предложений, таких как отключение встроенных функций, отключение конфиденциальности и разрешение участвовать в группах, я также сделал бота администратором моей группы. И теперь он обрабатывает все сообщения. Это то, что у меня сработало.
Источник: question-it.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: как ведут себя боты?
Telegram — самый надёжный мессенджер, славный своей безопасностью и защищённостью. За это он так и любим миллионами пользователей по всему миру — лёгкий, быстрый, надёжный, секретный.
Тем не менее, в новостях порой появляются сообщения о том, что часто случается сбой Telegram, да и каждый из нас наверняка сталкивался с такой проблемой: сообщения не доставляются и не приходят, боты не отвечают, каналы не обновляются. Чаще всего проблемы возникают на территории нескольких стран, но пару раз общение в мессенджере было недоступно по всему миру. Стоит отдать должное инженерам и разработчикам Telegram, со временем это случается всё реже и реже, но полностью исключить вероятность возникновения проблем нельзя. От случайностей никто не застрахован, но всё же давайте разберёмся: что происходит, когда Telegram падает, и как ведут себя боты во время таких форс-мажоров?
Географические сбои
Сбой Telegram бывает разным: иногда, например, какая-то часть серверов, расположенных в одном географическом регионе, по какой-то причине перестаёт отвечать. Причин тому может быть несколько: падение напряжения, высокая нагрузка, физические повреждения.
В этом случае пострадать могут пользователи и боты, зарегистрированные в странах, где случился сбой, а также каналы и группы, владельцы которых находятся в зоне поражения. Например, если ваш бот хостится где-нибудь в Польше, а у Telegram случился сбой в восточной Европе, то запросы, приходящие на сервера в зоне поражения, не получают ответа и «зависают». Не приходят и входящие сообщения тем, кому не повезло оказаться в этом районе. Сообщения пользователям доставятся, как только будет восстановлена работоспособность серверов, а вот боты могут реагировать по-разному: не получив ответа на запрос, программы с низкой отказоустойчивостью могут зациклиться или вылететь совсем, в то время как более надёжные аналоги придут в себя после сбоя самостоятельно.
Внутренние сбои
Кроме региональных сбоев, случаются отказы и какой-то внутренней части Telegram, не привязанной к определённому региону. Так, «упасть» может API Telegram, то есть, непосредственно механизм взаимодействия с ботами. Тогда обычные пользователи по всему миру не испытывают затруднений при отправке сообщений, группы и каналы работают как положено, а вот боты не получают ответов от сервера Telegram и замирают. Обычный человек, отправивший в это время запрос в бота, не увидит причины, и будет просто сердиться на разработчиков, хотя, к сожалению, они никак не могут повлиять на такую ситуацию. Бот, не получивший ответа от API, будет вести себя по-разному в зависимости от настроек: если при разработке не проработать механизм реагирования на такую ситуацию, программа может “упасть” и восстанавливать работоспособность придётся вручную.
Таймаут и реакция на него
Иногда сбои бывают минорными: выходит из строя один из серверов большого кластера. Общая работоспособность системы сохраняется, но время ответа на запросы увеличивается, с точки зрения пользователя Telegram просто “тупит”. Казалось бы, ничего страшного нет, ответ ведь приходит, просто с задержкой, разве бот может сломаться от такого? Оказывается, что и такое возможно: если при написании программы не настраивать поведение при длительном таймауте, то бот может впасть в ступор и не обработать ни пришедший с запозданием ответ, ни последующие запросы.
Боты и их реакция на проблемы
Так что же происходит во время сбоев? Если в случае с пользователями всё примерно понятно: сообщения не отправляются и не приходят, то с ботами всё немного сложнее. Некоторые после восстановления Telegram остаются безответными, в то время как другие самостоятельно оживают. В зависимости от настроенной схемы взаимодействия бот может ответить на все присланные во время сбоя запросы, а может оставить их без внимания и ответить только на последний, чтобы оповестить о восстановлении работоспособности. Конечно, пользователю важно знать, что сбой позади и всё восстановилось, но получать множество сообщений скопом неудобно и бесполезно.
Грамотно написанный бот должен включать в себя все сценарии возможных сбоев и уметь самостоятельно восстанавливаться после падений. Работа в условиях повышенного таймаута, своевременное включение в строй после бездействия без участия непосредственно человека, предотвращение зацикливания и вежливое отношение к пользователю — вот что отличает качественно написанного бота от поделки на коленке.
Конечно, и разработчики, и пользователи хотят, чтобы программы, с которыми они имеют дело, были отказоустойчивыми и как можно скорее приходили в себя после поломок. Для этого важно быть предусмотрительным при разработке ботов и заранее продумывать варианты поведения при различных сбоях, причём не только для взаимодействия с сервером, но и о том, как это будет выглядеть с пользовательской стороны.