Лайфхаки

Маленькие, полезные хитрости

Как я писал telegram-бота и заливал его на сервер: шаг за шагом

23.03.2024 в 04:33

Как я писал telegram-бота и заливал его на сервер: шаг за шагом

Я осознано не стану называть провайдера, которым я пользуюсь. Меня все устраивает. Но вы сами можете выбрать тот, который считаете наиболее подходящим для вас. При выборе VDS важно обратить внимание на следующие аспекты:

    Надежность Провайдера : Изучите отзывы и репутацию провайдера.

    Технические Характеристики : Убедитесь, что сервер соответствует требованиям вашего проекта.

    По своему опыту скажу что самый базовый бот, без БД может уместиться на 1CPU, 0.5GB ОЗУ и 10GB SSD

    Бот посложнее с БД запросит 1-2CPU, 2GB ОЗУ и 15GB SSD. С включением дополнительных компонент могут происходить и другие изменения в требованиях, например инсталляция MongoDB, потребовала наличия AVX инструкций на CPU, что было невозможно на базом тарифе и стоило мне почти 70руб ежемесячно плюсом.

    Далее все зависит от ваших желаний, локальные инстансы ИИ могут потребовать GPU, но это отдельная тема и стоимость. Для первых шагов вам вполне подойдет база

    Ценовая Политика : Сравните цены и выберите оптимальный тариф. На старте для 4 ботов я уложился в 170 рублей в месяц, включая статический IP. С ростом моих запросов и запросов ПО стоимость доросла до 600 рублей месяц, но у меня есть теперь примерно 100% запаса емкости по любому параметру, что меня вполне устраивает.

    Местоположение серверов : этот пункт стал очень актуален последнее время, т.к если ваш сервис, предполагает взаимодействие с другими интернет ресурсами, то возможно стоит выбирать провайдера в том информационном пространстве, с элементами которого ему предстоит взаимодействовать.

    Поддержка и Служба Помощи : Наличие квалифицированной технической поддержки. Проблемы и вопросы, как бы вы не хотели их избежать, будут. Раз в год-два, примерно, я всё-таки обращаюсь в ТП и мне очень нравится, что они оперативно 24/7 решают их, самостоятельно эскалируя те, которые не могут решить.

Связанные вопросы и ответы:

1. Какой язык программирования использовался для написания telegram-бота

Я использовал язык программирования Python для написания моего telegram-бота. Python - это очень популярный и простой в изучении язык, который поддерживает множество библиотек для работы с API.

2. Какие библиотеки были использованы при создании telegram-бота

Для создания моего telegram-бота я использовал библиотеку python-telegram-bot. Эта библиотека предоставляет удобные инструменты для работы с Telegram API и облегчает процесс разработки бота.

3. Какие шаги нужно предпринять для создания нового бота в Telegram

Для создания нового бота в Telegram необходимо обратиться к официальному боту @BotFather и следовать инструкциям по созданию нового бота. После создания бота вы получите токен, который нужно будет использовать для доступа к API.

4. Каковы основные функции, которые могут быть реализованы в telegram-боте

Основные функции, которые могут быть реализованы в telegram-боте, включают отправку текстовых и мультимедийных сообщений, обработку команд от пользователей, взаимодействие с базой данных, оповещения и уведомления, аналитика и статистика.

5. Как происходит процесс тестирования telegram-бота перед его запуском

Для тестирования telegram-бота перед его запуском я использую специальные тестовые аккаунты в Telegram, на которых проверяю работу бота. Я также создаю тестовые сценарии, чтобы проверить все функции бота и выявить возможные ошибки.

6. Каким образом можно развернуть telegram-бота для доступа к нему извне

Для развертывания telegram-бота для доступа к нему извне, я использую хостинг или облачные сервисы, такие как Heroku или AWS. Настройка вебхука позволяет установить соединение между ботом и сервером, что обеспечивает постоянное обновление бота и его доступность.

7. Каким образом можно обновлять и модифицировать функционал telegram-бота после его запуска

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

Какой язык программирования лучше использовать для написания telegram-бота

Какой язык программирования лучше использовать для написания telegram-бота. Чем разработка отличается от создания на конструкторе?

Для начала давайте узнаем, какими преимуществами обладает написание программы (по сравнению с созданием ботов на конструкторах).

Во-первых, все конструкторы ограничены. Некоторые способны создавать только ботов для общения, некоторые создают только бизнес-ботов, некоторые только игровых и т.д. В то время как программирование ограничивается лишь знаниями и навыками программиста.

Имея достаточно навыков и умений по написанию программ, вы сможете создать бота практически любой сложности. Он будет выполнять любые действия, которые вы в него заложите.

Почему лучше уметь писать ботов самостоятельно?

По сути, вышеуказанной причины уже достаточно, чтобы начать написание ботов вручную. Но это не единственный плюс.

Во-вторых, некоторые из конструкторов могут быть платными, на что мы не всегда готовы выделить деньги. Для написания бота же, в крайнем случае, вам потребуется оплатить хостинг или сервер (60 – 150 рублей). Но чаще всего люди используют бесплатные облачные сервера (например, Heroku) и размещают там свои приложения.

Конечно, вы можете найти и бесплатные конструкторы, но, как правило, их функционал ограничен всего лишь несколькими функциями (возвращаемся к «во-первых»). И в большинстве ситуаций его недостаточно. И здесь вы вынуждены либо искать другой конструктор, который удовлетворял бы вашим потребностям (а он уже может быть платным), либо использовать не одного, а сразу несколько ботов, чтобы каждый из них выполнял свои действия. В первом случае найти подходящий конструктор крайне сложно, а во втором – использование нескольких ботов – не очень удобно.

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

Как создать бота и получить API-ключ от Telegram

Откроем редактор кода и инициализируем проект через терминал с помощью команды npm -y. После этого в проекте появится файл package.json. Теперь мы можем добавить все необходимые библиотеки командой npm i, после которой через пробел прописываются названия необходимых нам библиотек. Все названия можно посмотреть в документации: в этом примере это будут telegraf и axios. 

Стоит отметить, что API погоды отдельно устанавливать не нужно — она работает по архитектуре клиент-сервер, что позволяет просто отправлять запросы и получать ответы. 

Пока устанавливаются библиотеки, можно прочитать документацию к ним. У telegraf.js есть несколько примеров готового бота. Можно взять первый пример и посмотреть, как он работает. 

Для этого создадим новый файл с именем bot.js и добавим в него следующий код: 

const { Telegraf } = require('telegraf'); const bot = new Telegraf(process.env.BOT_TOKEN); bot.start((ctx) => ctx.reply('Welcome')); bot.help((ctx) => ctx.reply('Send me a sticker')); bot.on('sticker', (ctx) => ctx.reply('')); bot.hears('hi', (ctx) => ctx.reply('Hey there')); bot.launch(); // Enable graceful stop process.once('SIGINT', () => bot.stop('SIGINT')); process.once('SIGTERM', () => bot.stop('SIGTERM'));

В package.json пропишем стартовый скрипт для этого файла. Для этого в разделе scripts добавим новый пункт со следующим содержанием: 

"start": "node bot.js"

Если мы запустим проект в терминале командой npm start, то увидим сообщение ”Bot token is required”. Получить токен можно через Telegram BotFather — официального бота мессенджера, который создает другие боты и управляет ими. В интерфейсе выбираем /start, затем — /newbot, и следом задаем имя и адрес. В этой инструкции это будет elbrusbootcampweatherbot.

После этого BotFather пришлет сообщение с токеном и ссылкой на бот. Копируем токен и вставляем его в третью строчку примера: 

const bot = new Telegraf(process.env.BOT_TOKEN);

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

Первая строка отвечает за подключение библиотеки telegraf, которая непосредственно взаимодействует с API Telegram и позволяет нам использовать определенные методы для работы с ботом. В следующей строке создаем нового бота и указываем ключ доступа к нему. 

Далее указано, как бот будет реагировать на различные команды: при нажатии /start он отправит сообщение welcome, при отправке стрикера — эмодзи и так далее. Последние две строчки нужны для того, чтобы выполнение ботом команд правильно завершалось в облачных сервисах. 

Другие методы кроме /start нам не понадобятся, поэтому их можно смело удалить: 

const { Telegraf } = require('telegraf'); const bot = new Telegraf(process.env.BOT_TOKEN); bot.start((ctx) => ctx.reply('Welcome')); bot.launch(); // Enable graceful stop process.once('SIGINT', () => bot.stop('SIGINT')); process.once('SIGTERM', () => bot.stop('SIGTERM'));

Добавим собственные методы: при отправке геолокации бот отвечает актуальном прогнозом погоды для этой территории. Первым делом напишем обработчик, который будет принимать сообщение от пользователя и выводить его в консоль.

Какие функции может выполнять telegram-бот

Боты в Telegram умеют практически все: продавать, следить за списком задач и даже управлять умным домом. Мы рассмотрим функции, которые полезны для бизнеса: помогают увеличивать лояльность клиентов и повышать продажи.

  • Выступать в роли личного кабинета программы лояльности. Боты могут регистрировать новых клиентов в программе лояльности, отображать информацию о балансе бонусов и доступных промокодах.
  • Информировать об акциях и новинках товаров. С помощью бота можно делать рассылки актуальной информации, которая необходима пользователям: рассказывать об актуальных акциях магазина, новинках, напоминать о записях на мероприятия или брони столика.
  • Собирать отзывы клиентов. Боты могут не только запрашивать стандартную информацию: личные данные и контакты, — но и проводить опросы клиентов, выявлять уровень лояльности или удовлетворенности работой компании.
  • Помогать в продажах. Бот может показывать фото товаров с описанием их характеристик. После команды от пользователя бот регистрирует заказ, принимает оплату и оформляет доставку. Информация о заказе автоматически передается в учетную программу.
  • Консультировать клиентов 24/7. Бот может круглосуточно отвечать на простые вопросы клиентов. Такая функция помогает уменьшить нагрузку на менеджеров и подключать их только в случае нестандартных запросов. Например, бот подбирает одежду нужного размера, присылает инструкцию для товара, актуализирует остатки на складе, проверяет свободное время для записи к мастеру.

Какие библиотеки или фреймворки можно использовать при разработке бота

Это готовые решения для конкретных сфер и узконаправленных задач, они позволяют максимально быстро внедрить виртуального помощника в проект, навыки программирования при этом не требуются. Инструмент не рассчитан на кастомизацию.

Примеры: Just AI Solution Store , шаблоны чат-ботов BotHelp

С помощью готового бота можно, например, проводить собеседования по вакансиям, консультировать клиентов интернет-магазинов, проводить опросы, принимать заказы, записывать на консультации и др. В маркетплейсе готовых решений можно найти бота для узких задач ЖКХ, ритейла, e-commerce, финтеха и др. Для каждого решения готовы словари синонимов, основные интенты, логика сценария, интеграции с технологиями, отчетами аналитики и каналами.

Устроены готовые боты, как правило, достаточно просто, часто работают только на кнопках и реализуют несложную логику, без разветвленного сценария.

Преимущества

  • Минимум работы по настройке. Нужно только отредактировать контент и некоторые реплики бота, добавить ссылки и подключить нужные каналы.
  • Запуск без проработки сценария. Создатели шаблонов учли все важные моменты, касающиеся контента и логики конкретного кейса. С готовыми ботами можно не беспокоиться об организации инфраструктуры: сервера, поддержка интеграций, хостинг моделей NLU хранятся на стороне поставщика.
  • Быстрое тестирование гипотез. Можно установить бота для записи в салон красоты и проверить, действительно ли он разгружает администраторов.

Недостатки

  • Ограниченный выбор. Не для каждой задачи можно найти шаблон или готового бота.
  • Потолок роста. Если бизнес и количество услуг будут расти, функционала шаблона может стать недостаточно. Кроме того, не для всех кейсов будет хватать возможностей кнопочного бота без ИИ.
  • Сложная или невозможная кастомизация. Бывает, что возникает необходимость доработать сценарий, но владелец решения не дает доступ к исходному коду, что делает доработки невозможными.

Как подключить бота к серверу для его работы 24/7

Бот должен уметь отправлять запросы Телеграм-серверу и получать от него апдейты (updates, обновления).

Как получать апдейты в Bot API

Получать апдейты можно одним из двух способов:

    Поллинг — просто регулярно отправлять запрос к серверу Телеграма для получения обновлений,

    Вебхук — сделать так, чтобы Телеграм сам отправлял запросы по нужному URL.

Конечно, удобнее использовать библиотеки, чем делать http-запросы "руками".

Если вы попробуете, как написать Телеграм-бота на Python, вам предложат воспользоваться библиотеками python-telegram-bot и telebot. Но не стоит.

Ну, если вы только хотите познакомиться с разработкой ботов и написать своего hello-world-бота, то можете, конечно использовать и их. Но эти библиотеки могут далеко не всё. Среди разработчиков ботов лучшей библиотекой для ботов на Python считается. Она асинхронная, использует декораторы и содержит удобные инструменты для разработки. Ещё был хороший, но он давно не обновлялся.

Также ботов часто пишут на JavaScript, для этого обычно используется. Библиотеки есть и для многих других языков, но используют их реже.

Если же вы хотите использовать Telegram API, то можете воспользоваться Python'овскимии.

Пример кода бота

Если вы хотите получить какое-то представление о том, как вообще выглядит код бота, вот вам пример использования на aiogram с его странички на GitHub :

import asyncio from aiogram import Bot, Dispatcher, types async def start_handler(event: types.Message): await event.answer( f"Hello, {event.from_user.get_mention(as_html=True)} ?!", parse_mode=types.ParseMode.HTML, ) async def main(): bot = Bot(token=BOT-TOKEN) try: disp = Dispatcher(bot=bot) disp.register_message_handler(start_handler, commands={"start", "restart"}) await disp.start_polling() finally: await bot.close() asyncio.run(main())

Этот бот будет отвечать на команды/startи и/restart.

Какие основные этапы разработки telegram-бота

«Prompt Injection» — это метод атаки на модели машинного обучения, где используется стимул (prompt), то есть запрос, вводные данные, которые пользователь набирает, когда общается с нейросетью. Если стимул корректен, то и информация на выходе будет релевантной.

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

В целом такая инъекция представляет собой серьёзную угрозу моделям машинного обучения, которые применяют возможность ввода стимулов. Если чат-бот находится в локальной сети, то реализация такой атаки может стать для хакера ступенькой к получению закрытой информации или даже способом получить полный контроль над информационной системой. Для того чтобы защититься от этой угрозы, необходимо постоянно осуществлять контроль качества данных, защиту стимулов от изменений и валидацию входных данных. Также важно обеспечить безопасность конфиденциальных сведений, используемых для обучения модели, и предоставлять доступ к ним только авторизованным пользователям.

С описанной выше связана и другая уязвимость — «Indirect Prompt Injection» (IPI). Она угрожает компьютерным программам, которые создают текст на основе образцов и правил, полученных из больших объёмов данных. Примерами таких языковых моделей могут служить GPT3 или GPT4, Rubert.

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

Для того чтобы защититься от данной уязвимости, необходимо принимать следующие меры:

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

Как обеспечить безопасность и защиту данных в боте

Разберём, как логика такого простого бота реализована на Python 3 с помощью библиотеки TeleBot .

Взаимодействие между Телеграмом и функцией

Сначала давайте разберёмся в том, что происходит, после того, как пользователь совершает какое-либо действие с ботом.

Когда боту приходит любое сообщение или команда, Телеграм отправляет запрос с содержимым согласно вебхуку, который мы настроили командойsetWebhookв первой статье . В нашем случае Телеграм оповещает о событии API шлюз Яндекс Облака. API шлюз в свою очередь запускает функцию и передаёт ей на вход данные запроса от Телеграма.

При созданиимы настроили входную точку в python код - python-функцияhandlerв файлеindex.py. Запрос от Телеграма передаётся вhandlerаргументом под названиемevent.

Так как аргументы входной python-функции в шаблоне залогированы, после отправки команды боту во вкладкеЛогифункции можно посмотреть, какие именно запросы поступают - достаточно отфильтровать логи по уровню логированияDEBUGи тексту лога.

Тело запроса передаётся для обработки предварительно созданному объекту класса, который для простоты будем далее называть просто “бот”.

message = telebot.types.Update.de_json(event) bot.process_new_updates()

В процессе обработки сообщений бот совершает действия, которые подразумевает его реализация, после этого функция возвращает ответ API шлюзу и засыпает.

Верхнеуровневая логика обработки сообщений функцией полностью реализована в файлеindex.py:

import os import telebot from bot.structure import create_bot from database.ydb_settings import get_ydb_pool from logs import logger YDB_ENDPOINT = os.getenv("YDB_ENDPOINT") YDB_DATABASE = os.getenv("YDB_DATABASE") BOT_TOKEN = os.getenv("BOT_TOKEN") def handler(event, _): logger.debug(f"New event: {event}") pool = get_ydb_pool(YDB_ENDPOINT, YDB_DATABASE) bot = create_bot(BOT_TOKEN, pool) message = telebot.types.Update.de_json(event) bot.process_new_updates() return { "statusCode": 200, "body": "!", }

Инициализацию бота из файлаbot/structure.pyи подключение в базе данных изdatabase/ydb_settings.pyподробно разберём далее.

Инициализация бота и обработка пользовательских сообщений - базовый способ

Для того, чтобы понять, что такое контекст сообщения и какие с ним возникают сложности, разберём сначала базовый способ инициализации бота и задания его логики.

Бот задаётся с помощью токена доступа, полученного отBotFather.

import os import telebot bot = telebot.TeleBot(os.environ.get("BOT_TOKEN"))

Далее задаются правила обработки входных данных. Бот обрабатывает команды по заданным правилам, которые обычно выглядят так:

def handler_function(message, bot): pass # do something bot.register_message_handler( handler_function, commands=, # … pass_bot=True )

В качестве правила задаётся функция-обработчик сообщения, принимающая сообщение и бота на вход, и опциональный набор фильтров, по которым определяется, к какому сообщению какой обработчик применять:

    Типы содержимого сообщения (текст, фото,

    Список команд, содержащихся в сообщении

    Регулярное выражение, которому должно удовлетворять сообщение

    Функция-фильтр

    Типы чатов, в которых появилось сообщение

Подробнее про функциюregister_message_handlerи её аргументы можно прочитать в.

Сообщение, которое не подошло ни под одно правило, игнорируется.

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

@bot.message_handler(commands=) def handler_function(message): pass # do something

Проблема контекста сообщений

Стандартный подход к созданию хэндлеров позволяет легко обработать команды или сообщения заранее известного формата. Однако если логика бота подразумевает свободные сообщения от пользователя во многих разных сценариях, то с помощью перечисленных выше фильтров обработать все сообщения в корректном контексте не получится. 

Например, бот, который мы рассматриваем в этой статье, в рамках разных сценариев ожидает от пользователя в свободной форме ввести свои имя, затем фамилию, затем возраст, а также ответ на вопрос "Уверены ли вы, что хотите удалить аккаунт" формально тоже является обычным текстовым сообщением (и может быть введено в свободной форме), несмотря на наличие вариантов ответов. Каждое из этих сообщений от пользователя подразумевает особенную реакцию от бота. Ни типом контента, ни регулярным выражением разделить эти сообщения не получится.

Как настроить взаимодействие бота с пользователями

Сделать универсальное руководство по загрузке телеграм-бота на хостинг нельзя, поскольку для создания ботов используются разные технологии и языки программирования. Чаще всего виртуальных ассистентов для Телеграма пишут на Python или NodeJS. Наша инструкция основана на первом варианте: мы опишем, как выбрать хостинг для чат-бота на Python, установить нужные модули на сервер, залить, запустить, а также поставить бота на автоисполнение. Однако общая схема действий по установке, размещению и запуску может быть применима к любому телеграм-боту.

Как я писал telegram-бота и заливал его на сервер: шаг за шагом 01

Изображение от redgreystock на Freepik.

Выбор хостинга для телеграм-бота

Выбирая, где разместить своего чат-бота, следует обращать внимание на возможности и ресурсы, которые поставляет хостинг-провайдер. Установить и запустить телеграм-бота можно и бесплатно: например, через облачный сервис Heroku. Но бесплатный хостинг крайне ограничен и часто небезопасен. Если у вас простой бот, который отвечает на триггеры заготовленными репликами, его можно залить на обычный shared hosting. Главное, найти тариф с поддержкой Python и Telegram API.

Если же ваш помощник основан на нейросети и ожидается большой поток клиентов, лучше остановиться на аренде VPS (Virtual Private Server). На виртуальном сервере подключение будет стабильнее за счет изолированности вычислительных мощностей, а кроме того, VPS легче масштабировать. Вам не понадобится сайт и домен, чтобы его арендовать: подключиться можно будет по выделенному IP-адресу.

Допустим, вы заказали подходящий сервер и удаленно подключились к нему по SSH. Прежде чем размещать на нем файлы нашего бота, нужно установить зависимости, которые потребуются для его работы. В частности, это язык Python и библиотека РуTelegramBotAPI. Мы покажем, как поставить эти компоненты на примере ОС Ubuntu. Введите в терминал:

sudo apt install python3
sudo apt install python3-pip

Мы взяли третью версию «Питона», но если ваш бот написан на другой, то загрузите нужную. Теперь можно заливать файл на сервер.

Размещение чат-бота

Сначала создадим папку, в которой будем размещать телеграм-бота:

cd /home
mkdir имя_папки
cd имя_папки

Где имя_папки — это придуманное вами название директории (на латинице). Команда cd позволит нам перейти в эту директорию. Далее необходимо загрузить сами файлы. Это можно сделать через сторонний FTP-клиент (например, FileZilla) или панель управления VPS/VDS, если она имеется. В любом случае вам понадобятся данные для входа на сервер: логин, пароль и IP-адрес (вы должны были использовать их, когда устанавливали SSH-подключение). Откройте выбранную программу, найдите папку с указанным именем и залейте в нее файлы телеграм-бота.

Запуск бота

Чтобы запустить бота, примените команду следующего вида, подставив свое значение:

python3 имя_файла.ру

Обычно проект телеграм-бота хранится в файле с названием main.py или bot.py. У вас он может иметь другое имя, главное, чтобы расширение было «ру».

После этой команды ваш бот будет запущен. Вы можете убедиться в этом, зайдя в Телеграм и обратившись к нему в чате. Но есть одно но: сейчас ассистент работает, как приложение. Если вы закроете консоль, куда ввели команду для запуска, чат-бот отключится. Исправим это на следующем шаге.

Настройка автозапуска телеграм-бота

Ставить нашего бота на автовыполнение мы будем с помощью менеджера systemd. Чтобы создать службу, введите команду вида:

sudo nano /lib/systemd/system/example_bot.service

Замените example_bot на собственное значение. Теперь нужно прописать конфигурацию юнита. Она может выглядеть следующим образом:

Description=Example - Telegram Bot \\В переменной «Description» вы можете указать название своего бота, это просто описание, чтобы при открытии файла вы сразу поняли, к чему относятся нижеследующие параметры.

After=syslog.target
After=network.target

Type=simple
WorkingDirectory=/home/имя_папки/

ExecStart=/usr/bin/python3 /home/имя_папки/имя_файла.py \\Здесь и выше укажите названия, которые установили для директории и файла с ботом.

RestartSec=60
Restart=always

WantedBy=multi-user.target

Чтобы сохранить изменения и выйти, нажмите CTRL+S и CTRL+X. Теперь остается только запустить саму службу:

sudo systemctl enable example_bot
sudo systemctl start example_bot

Где example_bot — это название службы, которое вы указали в начале данного шага. Готово! Ваш телеграм-бот будет работать в фоновом режиме, даже когда вы отключитесь от сервера.