Задание: реализовать программу-бота для телеграмма, которая будет отвечать на запросы пользователя (обычного человека, использующего телеграмм) и предоставлять для него полезную информацию.
Тема-пример этой статьи Бот-эхо :
- Бот отвечает таким же сообщением, какое пользователь отправил
- Бот шлет Привет! Как дела? в 22:39 каждый день
Тема на оценку Бот-Remembrall :
- Боту можно отправить сообщение о чем-то важном, например 20:00 загамать в доту , 5 марта сделать дз по информатике
- Бот предупредит о важном событии в указанное время (или за день до даты)
- Придумать какую-нибудь дополнительную полезную функциональность
- Опционально Напоминание может содержать геотег (метку на карте)
- Опционально Предупреждать за N минут до звонка ( N — настраиваемое)
- Опционально Да что угодно!
- Генератор мемов (пользователь выбирает картинку и указывает текст для наложения)
- Оповещатель о новых сообщениях в vkontakte
- Выдаватель новых/случайных анекдотов/новостей из указанной пользователем группы vkontakte
Другие темы возможны по согласованию со мной.
Two Must-Have Telegram Bots to Help Analyze Tokens
В инструкции описано как сделать бота на Java , но Python для данной задачи на мой взгляд подходит лучше, так что любой другой язык для этого задания разрешен. Здесь есть ссылки для многих языков.
Дедлайн:
1) Про ботов
Общая идея в том, что вы регистрируете своего бота в телеграмме, затем запускаете программу, которая будет определять логику бота. Эта программа подключиться к серверам телеграмма, и если кто-то отправит сообщение вашему боту — сервера телеграмма оповестят об этом вашу программу. Программа соответственно может сообщать серверам телеграмма о том, какие действия совершает бот, например отправка овтетного сообщения.
2) Регистрация бота
Чтобы ваша программа-бот могла взаимодействовать с серверами телеграмма — ее нужно зарегистрировать, т.е. получить для нее идентификатор, чтобы сервера телеграмма могли понимать с кем они работают.
Для этого надо открыть https://telegram.me/botfather и нажать SEND MESSAGE , это откроет BotFather в установленном Телеграмме.
Теперь надо попросить у него выдать для нас идентификатор (и сделать это с уважением):
- /start
- /newbot
- Указать имя бота, например PolarNickTestBot
- Указать username оканчивающийся на _bot , например polar_nick_test_bot
- В ответ вам будет выслан HTTP API (в дальнейшем ключ бота ), что-то вроде 332239602:AAHGJSrMvTxVm239c3JJzHaz239mXyEE9tI
3) Библиотека Telegram API
Все взаимодействие с серверами телеграмма обернуто в нескольких удобных библиотеках, в рамках данной статьи предлагается использовать данную библиотеку — TelegramBots.
Создайте пустой проект, назвав его например TelegramEcho .
Скачайте отсюда файл telegrambots—jar-with-dependencies.jar .
Теперь эту библиотеку надо подключить к проекту:
- File->Project Structure->Libraries
- Зеленый плюсик сверху слева -> Java
- Указать скачанный файл, нажать Ok
4) Простой echo-bot
Создаем какой-нибудь класс и пишем в нем main -функцию — точку входа в приложение:
public static void main(String[] args)
Наследуем наш класс от TelegramLongPollingBot . Например:
public class MyTelegramBot extends TelegramLongPollingBot
Не забываем все ошибки Cannot resolve symbol решать через Alt+Enter->Import class .
В данном случае появится в том числе ошибка Class must either be declared abstract or implement abstract method. . Надо реализовать эти методы, по аналогии с тем как мы это делали при обработки нажатия кнопок/движения мышек/получения сообщений в задании 41 ( Alt+Enter -> Implement methods ).
В main -функции надо инициализировать библиотеку и запустить наш бот:
ApiContextInitializer.init(); TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try telegramBotsApi.registerBot(new MyTelegramBot()); > catch (TelegramApiException e) e.printStackTrace(); >
Теперь надо действительно реализовать те абстрактные методы, которые нам достались в наследство. Два из них заполняются тривиально — теми значениями, которые вы указали или получили на шаге 2 (в процессе регистрации бота):
Осталось делать что-нибудь, когда бот получает сообщения. Это делается в onUpdateReceived :
Message message = update.getMessage(); // Получаем текст входящего сообщения System.out.println(«New message: » + message.getText()); // Пишем в консоль о том, какое сообщение было получено
Но просто записывать в консоль полученное сообщение не интересно. Давайте ответим пользователю этим же сообщением в ответ:
SendMessage sendMessage = new SendMessage(); // Создаем объект, в котором опишем сообщение, которое хотим послать в ответ sendMessage.setChatId(message.getChatId().toString()); // Укажем, что отправить это сообщение следует в чате, из которого мы получили сообщение sendMessage.setText(«Echo: » + message.getText()); // Укажем текст сообщения try sendMessage(sendMessage); // Отправим сообщение > catch (TelegramApiException e) e.printStackTrace(); // Это обработка исключительных ситуаций — на случай если что-то пойдет не так >
Еще например можно было бы отправлять это сообщение как “ответ” на входящее сообщение:
5) Дополнительные материалы
Взаимодействие с vkontakte: для этого есть библиотека, которая оборачивает взаимодействие с API. С помощью этой библиотеки можно написать бота для vkontakte.
Забор информации с произвольного сайта: для этого надо выкачивать соответствующую html-страницу, и из нее извлекать информацию. Помочь может например библиотека jsoup. Примеры работы с этой библиотеки можно нагуглить, например это.
6) Отправка задания
ВАЖНО Обратите внимание, что API-ключ бота дает доступ и контроль над ботом. Поэтому если кто-то получит доступ к этому ключу — он сможет перехватить контроль над ботом. Поэтому при отправки кода мне или кому-либо еще — обязательно удалите API-ключ бота из исходников.
Отправляйте выполненное задание ввиде zip-архива src папки, и пожалуйста:
- Тему письма называйте правильно, например: Задание 61 16-1 Полярный Коля
- Правильно названный zip-архив (или 7zip), внутри которого папка src с .java файлами, пример названия: 61_16_1_polyarniy_nikolay.zip
Источник: www.polarnick.com
Как создать голосование в Telegram-канале или группе
Один из самых надежных способов убедиться в правильности развития Telegram — канала, а также следить за интересами и вовлеченностью аудитории, является создание и публикация опросов и голосования внутри канала. В Telegram с помощью бот-сервисов, а также встроенного функционала, реализована система голосования и опросов, разница в них состоит лишь в том, что в первом случае может предлагаться просто проявить инициативу путем нажатия кнопки под постом, а во втором добавлена возможность выбрать конкретный вариант ответа на поставленный вопрос.
Как создать голосование
Голосование в канале (встроенное desktop)
Создание опроса внутри мессенджера возможно и без использования дополнительных ботов, однако, стоит учесть, что в группе голосование может создать любой пользователь, а в канале лишь администратор. Для создания голосования с компьютера нужно открыть канал, где вы являетесь администратором и, нажав на многоточие в правом верхнем углу, открыть контекстное меню, где следует выбрать пункт «Создать опрос». После, надо следовать простым инструкциям самого мессенджера: Задать вопрос, задать варианты ответов, которых может быть до 10 штук, а также, если нужно, создать викторину, можно добавить соответствующий пункт. В этом случае, голосование станет викториной, в которой есть один правильный ответ, а выбравший не правильный вариант участник, получит заданное нами сообщение.
Опрос с помощью бота PollBot
Для организации опроса создано несколько ботов, которые значительно упрощают процесс создания, один из них — PollBot. Данный бот позволяет упростить создание голосования внутри группы и в нём нет анонимности, то есть бот создаёт открытое голосование/опрос, умеет самостоятельно оформлять вид голосования, а также обрабатывает результаты голосования. Для его использования, нужно: 1) Перейти по ссылке https://t.me/PollBot; 2) Войдя в чат с ботом, перейти в окно управления, нажав в правом верхнем углу многоточие; 3) Выбрать нужную группу для голосования; 4) Подтвердить выбор. Конкретно для создания голосования, нужно вновь перейти по ссылке https://t.me/PollBot и уже внизу, нажать кнопку Старт (Запустить). Появится ответное сообщение от бота с просьбой о выборе вопроса, однако, нам нужно отправить встречную команду /newpoll, далее бот попросит нас написать первый вопрос:
Затем бот просит ввести вопрос, задаваемый пользователю, затем 1-й вариант ответа, 2-й и т.д. По завершении добавления вариантов ответа, нужно отправить команду /done, после чего в ответ будет прислана ссылка на данное голосование.

Голосование в канале (через смартфон на android или ios)
Голосование, созданное на телефоне, не многим отличается от компьютера, но всё же стоит ему уделить внимание.
Сперва стоит нажать на значок скрелки, в поле для сообщения, затем в появившемся окне, справа, будет значок с подписью «опрос», он нам и нужен, нажав на него откроется поле для заполнения голосования. Также заполняя вводные, мы получим голосование, которое также можно сделать викториной.
Создание голосования через VoteBot.
Источник: cheatbot.ru
Как создать Telegram бота на PHP
Telegram-боты – это автоматизированные программы, которые выполняют определенные действия в ответ на сообщения или команды пользователей в приложении Telegram. Этот гид поможет вам понять, как создать своего собственного бота на языке программирования PHP.
Шаг 1: Создание бота в Telegram
Шаг 2: Установка библиотеки
Чтобы упростить работу с Telegram API, мы будем использовать библиотеку LongmanTelegramBot . Установить эту библиотеку можно через Composer:
composer require longman/telegram-bot
Шаг 3: Создание бота на PHP
Теперь, когда у нас есть все необходимое, мы можем приступить к написанию кода нашего бота. Вот пример простейшего эхо-бота:
‘localhost’, ‘user’ => ‘dbuser’, ‘password’ => ‘dbpass’, ‘database’ => ‘dbname’, ]; try < // Создание объекта Telegram $telegram = new LongmanTelegramBotTelegram($API_KEY, $BOT_NAME); // Включение MySQL $telegram->enableMySql($mysql_credentials); // Обработка входящих сообщений $telegram->handle(); > catch (LongmanTelegramBotExceptionTelegramException $e) < // Логирование ошибок echo $e->getMessage(); > ?>