Сможет ли бот читать сообщения в группе в Телеграм Боты могут работать в двух режимах при добавлении их в группы. По умолчанию боты видят только те сообщения, которые предназначены для них. В этом случае вы увидите «не имеет доступа к сообщениям» в списке участников группы рядом с ботом. Некоторым ботам для работы требуется больше информации, поэтому разработчики могут отключить режим конфиденциальности. В этом случае бот увидит все сообщения, отправленные в группу, а вы увидите «имеет доступ к сообщениям» в списке участников рядом с ботом. Если ваша группа содержит очень конфиденциальную информацию, возможно, лучше не добавлять ботов, которым вы не доверяете на 100%.
Источник: linkbaza.com
как настроить ирис бот в тг приветствие и правила
Как сделать чтобы телеграм бот работал постоянно
В Telegram с 24 июня 2015 появились боты, а точнее Telegram Bot API. То есть, теперь мою прошлую задачу получения статуса сервера можно решить гораздо удобнее.
Бот не является “пользовательским аккаунтом”, ему не нужен номер телефона, и самое главное — не нужно ставить клиентское приложение для Telegram на сервере или где вы хотите его использовать. Бот для Telegram — это ну как бы и есть API — веб-запросы к серверам Telegram. Механизм обработки запросов и отправки ответов лежит на вас, как на владельце бота.
Официальная документация по ботам здесь: https://core.telegram.org/bots
Создание бота
Нужно написать самому главному боту — BotFather:
…и уважительно попросить создать нового бота:
После этого бот будет создан. Обратите внимание на токен — по нему осуществляется доступ к боту, так что светить этот токен нельзя, иначе кто угодно сможет получить доступ к сообщениям бота (перехватывать запросы и отправлять свои ответы).
Сейчас, когда у вас уже создан бот и получен токен, я могу на примере продемонстрировать, что конкретно имел в виду под словами “это ну как бы и есть API”. Откройте браузер и перейдите по такому адресу:
В браузере отобразится примерно такое:
Для большей наглядности, вот скриншот браузера:
Вот что такое бот в Telegram. Вы отправляете веб-запрос и получаете на него JSON-ответ.
Разумеется, нам нужно автоматизировать как отправку запросов, так и разбор JSON-ответов, потому нужна программная реализация бота, которая будет работать на каком-нибудь сервере (можно и на домашнем компе, но тогда, очевидно, бот будет доступен только когда будет включен компьютер). И для этой цели можно выбрать абсолютно любой язык программирования, поддерживающий отправку веб-запросов, ведь, как я уже сказал и продемонстировал — работа с ботом это всего лишь отправка веб-запросов и разбор ответов.
Реализация бота
Я выбрал язык Python. Выбор далеко не случаен. Дело в том, что для Python уже есть готовая библиотека, существенно облегчающая реализацию бота — это pyTelegramBotAPI. Собственно, в ней сделано уже всё, что требуется для отправки веб-запросов и получения ответов, вам остаётся только описать команды, которые ваш бот будет уметь выполнять. Однако, какое-то понимание всё же потребуется, потому настоятельно рекомендую изучить документацию по API: https://core.telegram.org/bots/api
Итак, вам нужно поставить Python и какую-нибудь IDE (хотя, конечно, можно и в Блокноте). Вот что у меня:
Итак, у вас установлен Python и pip, ставим pyTelegramBotAPI:
Теперь создаём файл someTestBot.py , в котором и будет описан функционал бота. Я определил две обязательных команды /start и /help , а также команду отправки статуса сервера /server (забегая вперёд, она предназначена для запуска в Linux, так что при тестировании на Windows её вызов зафейлится):
Скрипт сбора информации о статусе сервера status.sh я взял из прошлой статьи и немного изменил:
Его надо поместить на сервере по пути /root/scrps/status.sh , либо каком другом, но тогда надо не забыть изменить его и в исходниках бота.
На этом реализация бота закончена.
Возвращаемся к BotFather, указываем ему команды, которые знает бот:
Размещение и запуск бота на сервере
Как я и говорил, команду /server в Windows он обработать не смог, и пойманное исключение записалось в журнал.
Кстати, обратите внимание — приложение показывает подсказки о всех командах бота, которые мы добавили через BotFather:
Теперь задача, как сделать так, чтобы бот работал постоянно. Идём на сервер с Linux, создаём каталог /usr/local/bin/someTestBot/ , кладём в него наш someTestBot.py . Кстати, на сервере тоже должен быть установлен pyTelegramBotAPI (разумеется, Python и pip тоже).
Я расскажу о двух способах, как запустить скрипт в качестве сервиса: Supervisor и systemd .
Supervisor
Создаём конфиг для процесса ( /etc/supervisor/conf.d/someTestBot.conf ):
С таким конфигом, надо полагать, бот будет “выполняться” с root правами, что некруто. Скорее всего, можно задать, с какими правами это будет работать. Ну да ладно, нам же надо скорее в продакшн, так что запускаем:
systemd
А можно ничего и не устанавливать, если в системе используется systemd .
В User=someTestBot можно и root указать, но я рекомендовал бы создать под это отдельного юзера. Правда, тогда чтобы работали скрипты, надо будет дать этому пользователю доступ к mysqladmin .
Включаем нашу только что созданную службу:
Ну всё, бот работает, проверяем:
Что ещё можно сделать? Ну, вот эта строка — bot.polling() — в общем-то, означает бесконечно выполняющийся цикл запросов к серверам Telegram, что не очень правильно в плане потребления ресурсов на обеих сторонах. Лучше сделать так, чтобы приложение бота ожидало сообщения от Telegram. Это можно сделать, реализовав webhook. Когда доберусь до этого, дополню статью.
Наконец-то запилил инструкцию на webhook. Решил не добавлять здесь, а запостить новую статью.
Как сделать так, чтобы бот работал постоянно?
Что нужно сделать, чтобы бот работал на постоянке, даже если я выключал бы свой пк/посоветуйте какие нибудь сервисы,если такие знаете.
Для этого нужно использовать любой из существующих хостингов. Например google cloud, если ваш бот не большой. В противном случае придется пользоваться платными хостингами.
Я воспользовался сервисом https://www.pythonanywhere.com там все бесплатно и понятно. Регистрируешься, затем добавляешь файлы с ботом в раздел Files и после запускаешь.
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как сделать, чтобы на VDS Телеграм бот работал постоянно?
Приветствую! Впервые заливаю бота на сервер, в связи с чем столкнулся с некоторыми проблемами. Для тех кто уже это делал вопросы могут показаться лёгкими, но для меня, увы, пока непонятно! Прошу помочь, а вопросы следующие:
1) Как сделать чтобы бот работал постоянно/круглосуточно + автоматически запускался после краша?
(Сейчас использую PuTTY, как я понял после запуска бота из консоли, в случае закрытия этой самой консоли бот тоже остановится?)
2)Как запускать одновременно на одном серваке несколько ботов, чтобы не было конфликтов между ними.
(Слышал про cmd-команду «screen» для создания виртуальной сессии, а также про systemd, это оно, копать в эту сторону?
3)Webhook предпочтительнее longpolling при одновременной работе нескольких ботов или не суть?
З.Ы. Хост — Fornex; Админка — Vesta; ОС — Debian 9; Терминал клиент — PuTTY; FTP клиент — WinSCP
Запускаем Python-скрипт на сервере, чтобы он работал всё время
В итоге мы остановились на том, что научились запускать скрипт на сервере, чтобы он работал после разрыва соединения. Но это половинчатое решение: если мы перезапустим сервер, то бот остановится. Иногда сервер перезагружается сам на стороне провайдера, например при плановых технических работах. И тогда наши скрипты умирают.
Сейчас нам нужно такое решение, чтобы бот автоматически перезапускался при любых обстоятельствах. Этим и займёмся.
Коротко — суть
Чтобы было понятно, что тут происходит, вот короткая версия:
- Настраиваем удалённый доступ к серверу.
- Создаём папку и заливаем в неё скрипт, который в итоге должен будет работать всё время.
- Создаём у себя на компьютере файл службы — он управляет настройками автозапуска скрипта.
- Отправляем файл службы на сервер.
- Обновляем на сервере данные обо всех службах и запускаем нашу.
Теперь подробно про каждый шаг.
Предварительная работа
Основное, что мы будем использовать, — это удалённый доступ к серверу по SSH. Для этого он должен быть включён на самом сервере, и там же можно сразу посмотреть параметры доступа. Например, для работы нашего учебного сервера мы пользуемся услугами SpaceWeb, где доступ по SSH включается из панели управления: