Содержание
Создаем Telegram бота на Python часть-1
Существует множество различных статей и учебных пособий по созданию ботов для телеграмм, некоторые из них достаточно сложны, часть требует знания отдельных технологий и фреймворков. В данной статье мы рассмотрим создание чат бота в мессенджере Telegram с нуля. От нас не будет требоваться каких-то специальных знаний. Для начала достаточно будет начальных знаний языка Python в качестве языка программирования.
Часть 1: Регистрация нового Telegram Bot-а
Для начала вы должны быть зарегистрированы в Telegram- мессенджере. Далее, вы в мобильной, десктопной или web-версии мессенджера открываете общение с ботом @BotFather, либо по ссылке https://telegram.me/botfather.
После начала общения с этим ботом, нажав /start, вы получите ответ от бота с указанием его возможностей. Нас интересует создание нового бота — /newbot.
После того как мы введем /newbot нас попросят придумать имя для нашего нового бота. Пусть оно будет MyFirstTestBot.
Далее нам нужно придумать юзернэйм для нашего бота. В нашем случае это будет mft001_bot.
После этого BotFather высылает нам специальный токен:
Наш токен оказался: 851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM (В вашем случае токен будет другой.)
Этот токен понадобится нам при настройке нашего бота. Токен должен быть сохранён. Именно он является единственным ключем для взаимодействия с ботом.
Также мы получаем ссылку на нашего бота. В моем случае это t.me/mft001_bot.
Теперь наш Tekegram-бот создан. Мы можем начать настраивать своего бота, например, установить изображение для бота, изменить или добавить описание бота и тп.
С регистрацией бота мы закончили. Наш бот уже есть, но на данный момент он еще ничего не умеет. Теперь нам нужна его начинка – какой-то механизм, который будет обрабатывать наши запросы к этому боту и возвращать нам ответы.
Часть 2 Написание кода
Как и написано выше мы будем создавать нашего бота на языке Python. Установите его с официального сайта, если вы используете Windows или выполните команду в терминале на Linux:
sudo apt-get install python python-pip
Далее воспользуемся системой управления пакетами PIP, которая используется для установки и управления программными пакетами, и установим библиотеку PyTelegramBotAPI (Telebot):
pip
install
pytelegrambotapi –
user
Создадим логику работы нашего бота. Используя полноценный IDE или простой текстовый редактор создадим файл ourbot. py и заполним его необходимой логикой.
Для начала нам нужно выполнить импорт библиотеки PyTelegramBotAPI (Telebot), написав в нашем файле:
import telebot
Далее подключим нашего бота, используя полученный ранее токен:
bot = telebot.TeleBot(‘851216368:AAG6_JHHsIqAK-lX2CxOWQHTAM109zdrcZM’)
Теперь создадим метод, для получения сообщений.
Возможности PyTelegramBotAPI позволяют отправлять боту аудио (content_types=[‘audio’), видео (content_types=[‘video’), документы (content_types=[‘document’), текст (content_types=[‘text’), географический адрес (content_types=[‘location’), данные контакта (content_types=[‘contact’) и стикеры (content_types=[‘sticker’). Мы, для простоты опыта, будем общаться с ботом только текстом:
@bot.message_handler(content_types=[‘text’])
def handle_text_messages(message):
Теперь рассмотрим логику обработки наших текстовых сообщений. Мы хотим захардкодить простое общение бота с пользователем: бот должен уметь здороваться, когда с ним здороваются, уметь отвечать на вопросы «Кто ты?», «Как тебя зовут?» и «Что ты умеешь?».
Видео курсы по схожей тематике:
SharePoint 2013 Администрирование
Александр Бабич
HighLoad++ 2017. Архитектуры/масштабируемость, бекенд, enterprise-системы
HighLoad
UWP Community Toolkit Basic
Вадим Рыбалко
if message.text == «Привет»:
bot.send_message(message.from_user.id, «Привет»)
elif message.text == «Кто ты?»:
bot. send_message(message.from_user.id, «Я тестовый чатбот для учебного примера.»)
elif message.text == «Как тебя зовут?»:
bot.send_message(message.from_user.id, «Меня зовут MyFirstTestBot.»)
elif message.text == «Что ты умеешь?»:
bot.send_message(message.from_user.id, «Я умею отвечать на несколько простых вопросов — кто я, как меня зовут и что я умею делать.»)
else:
bot.send_message(message.from_user.id, «Я тебя не понимаю. Напиши что-то другое.»)
После тела метода, обрабатывающего наши запросы к боту, добавим вызов метода:
bot.polling(none_stop=True, interval=0)
Задачей этого метода является создание потока, в котором бот отправляет запросы на сервер, уточняя таким способом, не писал ли ему кто-то сообщение. Параметр none_stop: False означает, что наша программа будет продолжать отправлять запросы на сервер после получения сообщения об ошибке от сервера Telegram.
Сохраним наш код:
Мы можем протестировать работу нашего бота, запустив его код в той IDE, в которой мы писали. И написав нашему боту в мессенджере.
Все работает.
Наш учебный Telegram-бот создан. Мы можем запустить наш файл локально, и он будет отрабатывать запросы к нему через мессенджер прямо на нашем компьютере, выступающим в роли сервера. Но это не очень удобная практика. Для нормальной работы код желательно залить на отдельный сервер и запустить его там.
Вопросы заливки нашего простого бота на сервер мы рассмотрим в следующей статье.
Резюме
Как мы увидели, создание работающего бота на Python для Telegram мессенджера достаточно просто. Для простых ботов не нужно использовать сложные решения — есть удобная библиотека PyTelegramBotAPI, позволяющая решить такие задачи. В нашем учебном примере мы рассмотрели только работу с текстом, но, благодаря этой библиотеке, бот может работать и с другими форматами данных. Попробуйте сами сделать своего бота, отвечающего на ваши вопросы.
Бесплатные вебинары по схожей тематике:
SEO – перезагрузка
Александр Шевчук
Веб-дизайн с Figma. Легкий старт.
Алла Штогрина
Возможности Vue.js для веб разработчика
Михаил Фисун
С нашей стороны мы рекомендуем ознакомиться с курсом подготовки Python-разработчика. Знания, полученные после прохождения данного курса позволят вам не только создавать различные приложения, но и получить полноценную профессию разработчика программного обеспечения.
Как сделать телеграм-бота на хостинге
Более подробно и со скриншотами мы уже описывали регистрацию тг-бота в статье для Спринтбокс. Вспомним основное:
- Создание любого бота начинается с сообщения отцу ботов в Телеграме — @BotFather (это официальный бот для создания тг-ботов)
- Создать бота можно командой /newbot
- Токен бота меняется командой /revoke
- У @BotFather есть справка по команде /help
Размещать бота в папке сайта или создавать под него новый сайт не обязательно — бот всё равно будет запускаться из консоли и веб-сервер ему не нужен. Это же приводит нас к еще одному ограничению — поддержки webhook для робота на Python нет, работает только polling. На Спринтбокс таких ограничений нет, любой вариант получения сообщений от Telegram API будет работать.
Чтобы не повторять статью Спринтбокс, напишем код бота на основе другой библиотеки — Aiogram — и примера базового бота из официальной документации.
- Создадим папку, откуда будет работать бот:
[username@server ~]$ mkdir ~/tgbot
- Подготовим и активируем виртуальное окружение — инструкция тут.
- Установим aiogram:
(bot_venv) [username@server ~]$ pip install aiogram
- Начнем писать бота прямо в терминале:
(bot_venv) [username@server ~]$ vim ~/tgbot/bot.py
Чтобы перейти в режим редактирования в vim, нажмем кнопку I
Для сохранения и выхода из vim нужно нажать ESC и после ввести :wq
Дальнейшие шаги такие же, как в документации Aiogram. - Импортируем все важные модули:
import logging
from aiogram import Bot, Dispatcher, executor, types
- Настроим логирование и инициализируем бота и диспетчера:
API_TOKEN = 'ВСТАВЬТЕ СЮДА ТОКЕН БОТА'
# Configure logging
logging.basicConfig(level=logging.INFO)# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot) - Настроим обработчик команд /start и /help и ответы бота:
@dp.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
""" This handler will be called when user sends `/start` or `/help` command """ await message.reply("Hi!\nI'm EchoBot!\nPowered by aiogram.")
Если вы хотите обрабатывать все текстовые сообщения в чате, то надо добавить обработчик без фильтров:@dp.message_handler()
async def echo(message: types.Message):
# old style:
# await bot.send_message(message.chat.id, message.text)await message.answer(message.text)
- И последний шаг — добавляем long polling:
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
После этого мы получаем Python-скрипт с телеграм-ботом:
Посмотреть код бота целиком
"""
This is a echo bot.
It echoes any incoming text messages.
"""
import logging
from aiogram import Bot, Dispatcher, executor, types
API_TOKEN = 'ВСТАВЬТЕ СЮДА ТОКЕН БОТА'
# Configure logging
logging. basicConfig(level=logging.INFO)
# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
@dp.message_handler(commands=['start', 'help'])
async def send_welcome(message: types.Message):
"""
This handler will be called when user sends `/start` or `/help` command
"""
await message.reply("Hi!\nI'm EchoBot!\nPowered by aiogram.")
@dp.message_handler()
async def echo(message: types.Message):
# old style:
# await bot.send_message(message.chat.id, message.text)
await message.answer(message.text)
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
Запуск бота
Бот готов, запустить его можно командой: (bot_venv) [username@server ~]$ python ~/tgbot/bot.py
Но если закрыть соединение по SSH, бот тоже закроется. Чтобы этого не случилось, нужно дополнить код. В самое начало вставляем: import os, sys
activate_this = '/home/username/bot_venv/bin/activate_this. py'
with open(activate_this) as f:
exec(f.read(), {'__file__': activate_this})
Этот код активирует виртуальное окружение сразу внутри бота, и его не придется запускать отдельно.
Теперь можно будет запустить бота в tmux и оставить его работать, даже отключившись от SSH.
Tmux уже установлен на всех серверах виртуального хостинга. Для запуска утилиты достаточно набрать в терминале tmux: [username@server ~]$ tmux
И уже здесь нужно будет запустить бота, как мы делали это раньше: [username@server ~]$ python ~/tgbot/bot.py
Теперь чтобы отключиться от сессии tmux, достаточно будет набрать комбинацию клавиш Ctrl + B, отпустить и нажать D.
Команды:
- Посмотреть список сессий:
[username@server ~]$ tmux ls
- Подключиться к последней активной сессии:
[username@server ~]$ tmux a
- Подключиться к определенной сессии:
[username@server ~]$ tmux a -t 0
Вместо нуля используйте конкретный номер сессии, его можно узнать через tmux ls
Один из наших сотрудников написал простой bash-скрипт, который выполняет запуск, перезапуск и остановку.
Посмотреть скрипт
#!/usr/bin/bash
if [[ "$#" == 0 || "$1" == "--help" || "$1" == "-h" ]]; then
echo "
Скрипт для мониторинга бота
start — запускает бота
stop — останавливает бота
status — проверяет, запущен ли процесс
restart — перезапускает бота
check_start — запускает бота, если тот не работает
Пример:
bot_control /home/login/tgbot/bot.py check_start
"
exit 0
fi
[[ ! -f $1 ]] && { echo "Такого файла нет."; exit 1; }
bot_path=$1
bot_runner="/opt/rh/rh-python38/root/usr/bin/python"
function get_pid {
bot_pid="$(pgrep -alf python | grep ${bot_path} | awk '{print $1}')"
echo ${bot_pid}
}
function bot_status {
pid=$(get_pid)
if [[ -z ${pid} ]]; then echo "Бот не запущен."; exit 0; fi
echo "$(ps -p ${pid} -o pid,pcpu,command)"
}
function bot_start {
pid=$(get_pid)
if [[ ${pid} ]]; then echo "Бот уже запущен. "; exit 0; fi
exec ${bot_runner} ${bot_path} 2>/dev/null &
echo "Бот запущен."
}
function bot_stop {
pid=$(get_pid)
if [[ -z ${pid} ]]; then echo "Бот не запущен."; exit 0; fi
kill $(get_pid)
echo "Бот остановлен."
}
function bot_restart {
pid=$(get_pid)
if [[ ${pid} ]]; then
bot_stop
sleep 3
bot_start
exit 0
else
echo "Бот выключен. Попробуйте: bot_control ${bot_path} start"
fi
}
function bot_check_start {
pid=$(get_pid)
if [[ -z ${pid} ]]; then echo "Бот не запущен. Запускаю."; bot_start; exit 0; fi
echo "Бот запущен, всё хорошо."
}
case "$2" in
start)
bot_start
;;
stop)
bot_stop
;;
status)
bot_status
;;
restart)
bot_restart
;;
check_start)
bot_check_start
;;
*)
echo "Неверная команда. "
;;
esac>
Скрипт можно дорабатывать под себя бесконечно, плюс есть другие рабочие аналоги, это лишь пример.
Прямо сейчас скрипт работает только для Python, но интерпретатор можно легко поменять на 21-й и 24-й строках.
Чтобы запустить скрипт, как в примере кода, нужно сделать исполняемым файл под именем bot_control и положить его в папку /home/username/.local/bin/, где username – это логин вашего аккаунта.
Эти команды помогут развернуть скрипт на аккаунте: [username@server ~]$ chmod +x bot_control
[username@server ~]$ mkdir -p ~/.local/bin/
[username@server ~]$ mv bot_control ~/.local/bin/
Была ли эта инструкция полезной?
Как создать бота Telegram, не зная программирования

Что такое боты?
Итак, боты в Telegram — это в основном прославленные сторонние чат-приложения, которые во многих случаях могут значительно улучшить сервис. Например, если вы являетесь постоянным пользователем Trello, вы можете воспользоваться ботом Trello для создания новых карточек для определенной доски через сам Telegram.
Создать бота несложно, хотя все зависит от характера бота. Вам, вероятно, понадобится опыт программирования, чтобы выполнить работу, если вы хотите создавать продвинутых ботов.
- Откройте приложение Telegram на своем компьютере.
- Подключитесь к BotFather. 0022
1] Откройте приложение Telegram на своем компьютере
Первое, что вам нужно сделать, это запустить Telegram, если он еще не открыт. Вы должны найти значок на рабочем столе или в меню «Пуск». В зависимости от ваших настроек вам, возможно, придется добавить пароль, чтобы получить доступ к вашей учетной записи.
2] Подключиться к BotFather
Следующим шагом будет прямое подключение к BotFather. Для этого нажмите на поле поиска в верхнем левом углу Telegram. Сделав это, найдите BotFather и выберите его в меню. Чтобы подключиться, нажмите кнопку «Пуск» в нижней части экрана.
3] Выберите опцию «Новый бот». Единственная команда, которая сейчас имеет смысл, это 9.0004 /newbot
, поэтому выберите его.4] Дайте вашему боту имя
Теперь BotFather попросит вас дать вашему новому боту имя. Для этого просто введите имя в поле сообщения, а затем нажмите клавишу Enter.
5] Выберите имя пользователя для вашего бота
Добавить имя для вашего бота — это одно, но теперь вы должны добавить имя пользователя. Для этого введите имя в текстовое поле и нажмите Enter. Имейте в виду, что для того, чтобы имя пользователя было зарегистрировано, оно должно заканчиваться словом bot. Например, TWCbot или TWC_bot.
6] Поздравляем, теперь ваш бот создан
После создания имени пользователя бота BotFather предоставит уникальный токен для доступа к HTTP API. Скопируйте токен и сохраните его, так как он понадобится вам в будущем.
Что можно делать с ботами?
Вы можете создать бота, предназначенного для приема платежей от пользователей Telegram или интеграции сервисов с Telegram, как мы указали выше. Кроме того, вы можете использовать бота для создания однопользовательских или многопользовательских игр в HTML5, среди прочего.
Что такое BotFather?
Если вы разработчик, который когда-то работал с Telegram, то наверняка слышали о BotFather. Из того, что мы поняли, BotFather — единственный бот, который правит ими всеми. Вам придется пройти его, чтобы создавать новых ботов и менять настройки существующих.
Читать : Как поделиться экраном в Telegram для рабочего стола Windows.
108
Акции
- Подробнее
Опубликовано на 900 04 Теги: социальные сети
[email protected]
Вамьен изучал компьютерные информационные службы и Интернет Дизайн. У него более 10 лет опыта в сборке настольных компьютеров, устранении проблем, связанных с Windows, и программировании на Python.
Как создать телеграмм бота в GOLANG | Реза Фаттахи
Опубликовано в
·
Чтение: 9 мин.
·
30 декабря 2021 г.
Telegram – это приложение для обмена сообщениями, которое становится все больше с каждым днем. Он имеет множество функций, включая ботов. Боты могут взаимодействовать с пользователями, группами, супергруппами и каналами.
В этой статье мы узнаем, как создать телеграмм-бота на golang.
- Учетная запись Telegram : Вам нужна учетная запись Telegram для создания бота с помощью botfather (описано позже).
- модуль телего : Telego — это новая библиотека для создания приложений для телеграмм в golang.
Чтобы установить telegot, вам необходимо установить его в свою $GOPATH с помощью команды go get . Просто введите в своем терминале следующее, чтобы установить его:
go get -u github.com/SakoDroid/telego
Создание бота
Сначала вам нужно создать нового бота с помощью bofather. Шаги ниже покажут вам, как это сделать:
- Запустите бота botfather.
- Отправить команду /newbot botfather.
- Выберите уникальное имя для своего бота.
- Если все в порядке, вы получите сообщение от botfather, как на картинке ниже. Он содержит токен , который мы будем использовать позже, поэтому запишите токен где-нибудь.
Теперь вы создали бота. Давайте перейдем к части кодирования.
Чтобы написать код для бота на golang, мы будем использовать библиотеку telego , как упоминалось ранее.
Мы рассмотрим этот раздел шаг за шагом:
шаг 1: импорт библиотек . Просто импортируйте следующие библиотеки:
package mainimport (
bt "github.com/SakoDroid/telego"
cfg "github.com/SakoDroid/telego/configs"
objs "github.com/SakoDroid/telego/objects"
)
Шаг 2: Создание конфигов бота. Конфиги бота — это структура, в которой есть несколько полей для настройки действий бота. Эти конфиги находятся в пакете configs который импортируется как конфиг . Этот пакет имеет некоторые значения по умолчанию, если вы не хотите возиться с конфигами. В конфигурациях бота есть поле с именем UpdateConfigs , в котором есть конфигурации, связанные с запросом и получением обновлений с сервера API. Теперь давайте посмотрим на код:
package mainimport (
bt "github.com/SakoDroid/telego"
cfg "github.com/SakoDroid/telego/configs"
objs "github.com/SakoDroid/telego/objects" "
)//Это токен, который вы получаете от botfather
const token string = "5078468473:AAHLCQfMnJTIFM25rFlbU2k5432kYD46dhs"//Экземпляр бота
var bot *bt.Botfunc main() { //Обновление конфигов
up := cfg.DefaultUpdateConfigs()//Конфиги бота
ср := cfg.BotConfigs{
BotAPI: cfg.DefaultBotAPI,
APIKey: токен, UpdateConfigs: up,
Webhook: false,
LogFileAddress: cfg.DefaultLogFile
}}
О программе поля BoConfigs:
1. APIKey : Это токен, который вы получили от botfather при создании бота.
2. BotAPI: Это адрес сервера API бота. Если вы не используете локальный сервер API, используйте константу cfg.DefaultBotApi для этого поля.
3. UpdateConfigs: Это настройки, связанные с обновлением, такие как частота обновления (по умолчанию: 300 миллисекунд). Вы можете использовать метод cfg.DefaultUpdateConfigs() для этого поля.
3. Веб-перехватчик: Передайте значение true, если хотите использовать веб-перехватчик для получения обновлений. (В настоящее время Telego не поддерживает веб-перехватчик).
4. LogFileAddress: Логи бота будут сохраняться в этом файле.
Шаг 3: Создание экземпляра бота. Теперь, когда мы создали конфиги, пришло время создать бота. Просто передайте созданные вами конфиги методу NewBot пакета telego (импортируется как bt ). После того, как вы создали бота. вам нужно вызвать Run() , чтобы бот запустился и начал получать обновления с сервера API.
package mainimport (
"fmt"bt "github.com/SakoDroid/telego"
cfg "github.com/SakoDroid/telego/configs"
objs "github.com/SakoDroid/telego/objects"
)const token string = "5078468473:AAHLCQfMnJTIFM25rFlbU2k5432kYD46dhs"//Экземпляр бота.
var bot *bt.Botfunc main() { up := cfg.DefaultUpdateConfigs()cf := cfg.BotConfigs{
BotAPI: cfg.DefaultBotAPI,
APIKey: токен, UpdateConfigs: up,
Webhook: false,
Адрес логфайла: cfg.DefaultLogFile
}var err error
//Создание бота с использованием созданных конфигов
бота, err = bt.NewBot(&cf)
if err == nil {
//Запускаем бота.
err = bot.Run()if err == nil{
start()
}else {
fmt.Println(err)
}
} else {
fmt.Println(err)
} 9000 7}функция start(){
//Описано в следующих разделах
}
Шаг 4: Получение обновлений и взаимодействие с клиентами. Telego предлагает два способа обработки полученных обновлений с сервера API:
- Обработчики
- Каналы Go
- Обработчики: Обработчики могут использоваться для текстовых сообщений и запросов обратного вызова (тип встроенных кнопок клавиатуры). Вы указываете шаблон регулярного выражения, типы чата и функцию. Каждый раз, когда приходит текстовое сообщение от указанных типов чата, функция будет вызываться с переданным в нее обновлением. Типы чата могут быть «приватный», «групповой», «супергрупповой», «канал» и «все». Вы можете указать несколько типов чата. Давайте добавим обработчик для текстового сообщения «/ start» и ответа «Привет, я телеграмм-бот!» :
пакет mainimport (
"fmt"bt "github.
com/SakoDroid/telego"
cfg "github.com/SakoDroid/telego/configs"
objs "github.com/SakoDroid/telego/objects"
)const token string = "5078468473:AAHLCQfMnJTIFM25rFlbU2k5432kYD46dhs"//Экземпляр бота.
var bot *bt.Botfunc main() { up := cfg.DefaultUpdateConfigs()cf := cfg.BotConfigs{
BotAPI: cfg.DefaultBotAPI,
APIKey: токен, UpdateConfigs: up,
Webhook: false,
Адрес логфайла: cfg.DefaultLogFile
}var err error
//Создание бота с использованием созданных конфигов
бота, err = bt.NewBot(&cf)if err == nil {
err = bot.Run()
if err == nil{
start()
} else {
fmt.Println(err)
}
} else {
fmt.Println(err)
}}func start(){
bot.AddHandler("/start", func(u *objs.Update) {//Отправляет сообщение в чат, из которого было получено сообщение. Сообщение будет ответом на полученное сообщение.
_,err := bot.SendMessage(u.Message.Chat.Id,"привет, я телеграмм бот!","",u.Message.MessageId,false,false)
if err != nil{
fmt.Println(err)
}}, "private","group")
}
Так как мы передали «private» и «group» методу AddHandler , этот обработчик будет работать, только если полученное сообщение из частного чата или группового чата.
2. Каналы Go: В Telego вы можете зарегистрировать каналы для определенных чатов и типов обновлений. Тип обновления — это файл, который содержит обновление. Он может содержать сообщение, edited_message, inline_query и т.д. Вы можете зарегистрировать канал, который будет обновляться, когда обновление содержит указанное поле. Вы также можете указать чат, что означает, что канал будет обновляться, когда он из этого чата. Эти два параметра можно комбинировать вместе для создания каналов, которые будут посвящены определенному типу обновлений в указанном чате.
В приведенном ниже коде мы регистрируем канал только для получения обновлений сообщений. Поскольку мы не указываем идентификатор чата, все обновления из всех чатов, содержащих поле сообщения, будут передаваться в этот канал. Давайте посмотрим:
пакет mainimport (
"fmt"bt "github.com/SakoDroid/telego"
cfg "github.com/SakoDroid/telego/configs"
objs "github.com/SakoDroid/telego/objects" "
)const token string = "5078468473:AAHLCQfMnJTIFM25rFlbU2k5432kYD46dhs"//Экземпляр бота.
var bot *bt.Botfunc main() { up := cfg.DefaultUpdateConfigs()cf := cfg.BotConfigs{
BotAPI: cfg.DefaultBotAPI,
APIKey: токен, UpdateConfigs: up,
Webhook: false,
LogFileAddress: cfg.DefaultLogFile
}var err error
//Создание бота с использованием созданных конфигов
бота, err = bt.NewBot(&cf)if err == nil {
9000 2 ошибка = бот.Выполнить( )if err == nil{
start()
}else {
fmt.Println(err)
}
} else {
fmt.Println(err)
}}func start(){ //Регистрация канала
messageChannel, _ := bot.AdvancedMode().RegisterChannel("", "message")
for {
//Ждать обновлений
up := <- *messageChannel//Вывести текст
fmt.Println(up.Message.Text)
}
}
Этот код будет получать обновления через messageChannel и распечатать текст.
Теперь, когда мы знаем, как получать обновления, как мы можем отправлять сообщения, мультимедиа и другие вещи обратно пользователю?
У Telego есть много методов для отправки обратно текста, фото, видео, наклеек и т. д. Все они начинаются с Send , например SendMessage для отправки текстового сообщения или SendPhoto для отправки фотографии.
Для отправки мультимедиа вызов связанного метода вернет MediaSender . Основываясь на документации по API бота телеграммы, мультимедиа можно отправлять тремя способами:
- Используя идентификатор файла, который уже хранится на серверах телеграмм.
- Использование URL-адреса HTTP.
- Использование файла на вашем компьютере.
MediaSender охватывает все эти три способа. Он имеет два метода: SendByFileIdOrUrl и SendByFile.
SendByFileIdOrUrl примет строку, которая является либо идентификатором файла, либо URL-адресом. SendByFile берет файл и загружает его на серверы телеграмм.
** Поскольку все методы отправки возвращают отправленное сообщение, вы можете сохранить идентификатор файла, который находится в возвращенном сообщении, для дальнейшего использования и избежать загрузки мультимедиа каждый раз.
(Для отправки других сообщений, таких как опросы и местоположения, вы можете прочитать полную документацию Telego здесь)
Теперь давайте создадим код, который будет отправлять два изображения каждый раз, когда получено текстовое сообщение «pic». Один из них — URL-адрес HTTP, а другой — файл, хранящийся на компьютере, на котором работает бот. В этом случае мы будем использовать обработчики (остальные части кода показаны выше и здесь удалены):
func start(){
bot.AddHandler("pic", func(u *objs.Update) {//ChatId этого чата
chatId := u.Message.Chat.Id //Получено сообщение if. Мы будем использовать его идентификатор, чтобы ответить на него
messageId := u.Message.MessageId //Создать медиа отправителя для отправки URL
mediaSender1 := bot.SendPhoto(chatId,messageId,"это заголовок","") //Отправить URL
_,err := mediaSender1.SendByFileIdOrUrl("http://example.com/funny_cat.jpg",false,false)
if err2 != nil{
fmt.Println(err)
} / /Создать медиа-отправитель для отправки файла
mediaSender2 := bot.SendPhoto(chatId,messageId,"это подпись","") //Открываем файл. ошибка игнорируется для упрощения кода
file,_ := os.Open("funny_cat.jpg")//Отправить файл
_,err = mediaSender2.SendByFile(file,false,false) if err != nil{
fmt.Println(err)
}}, "private")
}
И все, вы только что отправили две фотографии!
Код для отправки других медиафайлов аналогичен приведенному выше коду, но вам просто нужно вызвать соответствующий метод бота (например, SendVideo или SendGif ).
Telegram предлагает два типа клавиатур:
- Пользовательские клавиатуры: эти клавиатуры будут отображаться для пользователей вместо клавиатуры с буквами. (Вы можете переключаться между ними)
- Встроенные клавиатуры: Эта клавиатура будет отображаться под сообщением, с которым она была отправлена.
У Telego есть инструмент для создания обеих клавиатур, и им очень легко пользоваться. Для создания пользовательской клавиатуры вам нужно вызвать метод CreateKeyboard , а для создания встроенной клавиатуры вы можете вызвать метод CreateInlineKeyboard . Эти методы вернут указатель клавиатуры, который имеет несколько методов для добавления к ним кнопок. После того, как вы завершили клавиатуру, вы можете отправить их пользователю (пользователям) вместе с сообщением. Для их отправки просто передайте клавиатуру на клавиатура аргумент методов Отправить продвинутого бота.
Мы рассмотрим их оба с примерами кодов.
Пользовательские клавиатуры
Приведенный ниже код создает пользовательскую клавиатуру и отправляет ее с текстовым сообщением:
func start(){
bot.AddHandler("/start", func(u *objs.Update) {//Создаем пользовательскую клавиатуру
kb := bot.CreateKeyboard(false, false, false, "type...") //Добавляем к ней кнопки.Первый аргумент - текст кнопки, второй - номер строки, которую kb.AddButton("button1", 1) kb.AddButton("button2", 1)kb.AddButton("button3", 2)//Передать клавиатуру методу отправки
_, err := bot.AdvancedMode().ASendMessage(u.Message.Chat.Id, "и вам привет, пришлите мне местоположение", "", u. Message.MessageId, false,false, nil, false, false, kb) if err != nil { fmt.Println(err) } }, "private","group")
}
Когда каждая из этих кнопок нажата, боту отправляется текстовое сообщение, содержащее текст кнопки. Таким образом, для обработки каждой кнопки вы можете добавить обработчик текста, который содержит кнопка.
Встроенные клавиатуры
Встроенные клавиатуры имеют несколько типов кнопок. У Telego есть методы добавления всех этих кнопок. Методы полностью задокументированы в исходном коде. Теперь давайте создадим встроенную клавиатуру:
func start(){ bot.AddHandler("/start", func(u *objs.Update) { // Создает встроенную клавиатуру
kb := bot.CreateInlineKeyboard() // Добавляет кнопка URL, при нажатии этой кнопки URL будет открыт
kb.AddURLButton("url", "https://google.com", 1) //Добавляет кнопку, которая отправит обратный запрос, содержащий данные, которые мы передаем этой функции, боту при ее нажатии.0182 kb.AddCallbackButton("обратный вызов без обработчика", "данные обратного вызова 1", 2) //Добавляет кнопку, которая будет отправлять боту запрос обратного вызова, содержащий данные, которые мы передаем этой функции, при ее нажатии. Отличие этого метода от последнего заключается в том, что этот метод добавляет обработчик обратного вызова этой кнопки.
kb.