Файл: Лабораторная работа посвящена созданию бота для мессенджера Telegram. Для ее выполнения вам понадобится зарегистрироваться в telegram.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.01.2024

Просмотров: 393

Скачиваний: 9

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Лабораторная работа: Создание бота для Telegram.Эта лабораторная работа посвящена созданию бота для мессенджера Telegram. Для ее выполнения вам понадобится зарегистрироваться в telegram.Telegram − кроссплатформенная система мгновенного обмена сообщениями (мессенджер) с функциями VoIP, позволяющая обмениваться текстовыми, голосовыми и видеосообщениями, стикерами и фотографиями, файлами многих форматов.Архитектура бота включает в себя 2 части: Frontend и Backend.Frontend – Пользовательский интерфейс и функции, которые работаютнепосредственно на клиентской стороне.Backend – серверная часть проект (Работа с базой данных, сохранения, загрузка данных пользователя)API — это способ обмена информацией между сайтами, программами и приложениями. Можно также сказать, что это набор правил, по которым осуществляется такой обмен.Пользователями программ и сайтов могут быть не только люди, их также используют другие сайты и приложения. Они могут обмениваться данными между собой без участия человека. Это удобно, когда позаимствовать готовое решение проще, чем создавать с нуля собственное.Предварительные требования перед разработкой telegram – бота:

  1. Перед началом разработки нужно выбрать язык программирования. В рамках этой лабораторной работы выбираем Python версии 3.11.1.Ссылка для скачивания: https://www.python.org/downloads/release/python-3111/.

  1. Далее необходимо определиться со средой для разработки вашего telegram - бота. В качестве среды для разработки в рамках этой лабораторной работы выбираем Visual Studio Code.
Загрузка Python на WindowsПервым делом следует перейти на страницу загрузки Python и нажать сверху кнопку для загрузки последней версии.Далее необходимо открыть загруженный exe файл, после чего вы увидите такую картину:Теперь перейдем к установке. Первым делом нужно поставить галочку в пункте чекбокса “Добавить Python в PATH”.Это нужно, чтобы при написании в командной строке слова python у нас открывалась консоль Пайтона. Большинству приложений для работы с Python это необходимо, и без этой опции, выбираемой при установке, значительная часть приложений не будет знать о том, что у нас установлен этот язык программирования.
Далее уже можно нажать кнопку “Install Now” и ждем завершения работы инсталлятора.Вместе с сообщением об успешной установке вам предложат увеличить стандартный лимит длины PATH. Хуже от этого точно не будет, так что вполне можете это сделать.Установка VisualStudioCodeПри использовании VS Code в качестве текстового редактора или интегрированной среды разработки (IDE) вам доступны IntelliSense (помощь в завершении кода), анализ кода (помогает избежать ошибок в коде), поддержка отладки (помогает находить ошибки в коде после запуска), фрагменты кода (шаблоны для небольших повторно используемых блоков кода) и модульное тестирование (тестирование интерфейса кода с различными типами входных данных).VS Code также содержит встроенный терминал, который позволяет открывать командную строку Python с помощью командной строки Windows, PowerShell или любой другой, создавая простой рабочий процесс между редактором кода и командной строкой.

  1. Чтобы установить VS Code, скачайте VS Code для Windows: https://code.visualstudio.com/.

  2. Установив VS Code, необходимо также установить расширение Python. Для установки расширения Python открыть VS Code и выполнить поиск по фразе Python в меню расширений (Ctrl+Shift+X).
Python — интерпретируемый язык, и для выполнения кода Python необходимо указать VS Code, какой интерпретатор нужно использовать. Мы рекомендуем использовать самую последнюю версию Python, если у вас нет особой причины для обратного.После установки расширения Python выберите интерпретатор Python 3, открыв палитру команд (CTRL+SHIFT+P), и начните вводить команду Python: Select Interpreter (Python: выбор интерпретатора) для поиска, а затем выберите появившуюся команду. Вы также можете использовать параметр Select Python Environment (Выбрать среду Python) в нижней строке состояния, если она доступна (возможно, уже отображается выбранный интерпретатор). Команда предоставляет список доступных интерпретаторов, которые VS Code может найти автоматически, включая виртуальные среды.

Командная строка Python в VSCodeЧтобы открыть терминал в VS Code, выберите Просмотр> Терминал или используйте клавиши CTRL+` (символ обратного апострофа). Терминалом по умолчанию является PowerShell.Создание файла проектаДля того чтобы создать новый файл с расширением .py необходимо выполнить следующие действия: Файл> Создать файл и далее выбрать из выпадающего списка «Файл python».Далее появится пустое окно созданного файла нашего будущего бота.Разработка telegram – бота в VS CodeПеред тем как создать telegram – бота нам необходимо подключить перечень нужных нам библиотек для того, чтобы наш бот заработал:from matplotlib.pyplot import connectimport telebotimport sqlite3from telebot import typesmatplotlib - это основная библиотека для построения научных графиков в Python. Включает функции для создания высококачественны визуализаций: линейных диаграмм, гистограмм и т.д. Визуализация данных и результатов - цель использования библиотеки matplotlib.Для установки matplotlib необходимо в терминале VS Code прописать следующее: pip install matplotlibtelebot (pyTelegramBotAPI) хорошая и лёгкая библиотека для создания бота на python для telegram.Для установки telebot (pyTelegramBotAPI) на Windows вам надо написать в терминале VS Code: pip install telebot.SQLite3 (часто говорят просто SQLite) — это часть стандартного пакета Python 3, поэтому ничего дополнительно устанавливать не придется.Далее необходимо прописать token API для того чтобы связать нашу программу с созданным telegram – ботом:bot = telebot.TeleBot('Прописать ваш token API')Создание telegram – бота в мессенджереСоздадим бота и придумаем ему название:1. Откройте в Telegram бота @BotFather.2. Напишите ему /newbot.3. Придумайте и напишите название бота. Оно будет отображаться в контактах и чатах. Например, «Hello, bot».4. Придумайте и напишите юзернейм. Он используется для упоминания бота и в ссылках. Юзернейм должен быть на латинице и обязательно заканчиваться на «bot». Например, «botmother_hello_bot».Теперь нужно подключить бота в Telegram к вашему аккаунту разработчика:1. Снова откройте @BotFather.2. Скопируйте токен бота и добавьте его в следующую строчку кода:bot = telebot.TeleBot('Прописать ваш token API')
Далее мы соединимся с уже ранее созданной нами базы данных в SQLite:def connecting():    conn = sqlite3.connect("Имя вашей БД.db")    return connДля рассылки сообщений пользователям вашего бота необходимо создать функцию, которая будет брать id пользователя бота и осуществлять рассылку сообщений:#функция для рассылки сообщения пользователям в БД users.db@bot.message_handler(commands=['sendall'])def sendall(message):  conn = connecting()  cursor = conn.cursor()  cursor.execute("SELECT id FROM user_id") #id – название столбца, user_id – название таблицы  results = cursor.fetchall()  for result in results:    bot.send_message(result[0], message.text[message.text.find(' '):])  conn.close()commands=['sendall'] – это команда для активации данной рассылки в telegram – боте. Для того чтобы ее активировать и осуществить рассылку вам необходимо открыть мессенджер telegram, зайти в ваш бот и ввести следующую команду: /sendall.Далее пропишем основную команду start для нашего бота. Для того чтобы записать нашего пользователя в БД при команде start пропишите следующий код:@bot.message_handler(commands=['start'])def start(message):   #функция для записи id пользователей в БД users.db  connect = sqlite3.connect("users.db") # user.db – название вашей БД  cursor = connect.cursor()  cursor.execute("""CREATE TABLE IF NOT EXISTS user_id(    id INTEGER  )""")  connect.commit()  people_id = message.chat.id  cursor.execute(f"SELECT id FROM user_id WHERE id = {people_id}")  data = cursor.fetchone()  if data is None:    user_id = [message.chat.id]    cursor.execute("INSERT INTO user_id VALUES (?);",user_id)    connect.commit()  else:    bot.send_message(message.chat.id,'Такой пользователь уже существует')Далее приступи к созданию меню для нашего бота: #Меню чат-бота  markup = types.ReplyKeyboardMarkup(resize_keyboard=True)  item1 = types.KeyboardButton('???? Прайс услуг')  item2 = types.KeyboardButton('⚜ Premium услуги')  item3 = types.KeyboardButton('❗ Акции')  item4 = types.KeyboardButton('???? Запись')  item5 = types.KeyboardButton('✆ Контакты')    markup.add(item1,item2,item3,item4,item5)  bot.send_message(message.chat.id,'Привет, {0.first_name}'.format(message.from_user),reply_markup=markup)name = ''time = ''tel = ''Теперь, когда мы прописали код для создания нашего меню, то, когда вы запустите вашего бота можно увидеть только что созданное вами программно меню в самом низу бота.Для того, чтобы при нажатии на кнопки нашего меню происходили какие-либо действия, например, вывод каких-либо сообщений необходимо прописать следующее:
@bot.message_handler(content_types=['text'])def bot_message(message):  if message.chat.type == 'private':    if message.text == '???? Прайс услуг':      markup = types.ReplyKeyboardMarkup(resize_keyboard=True)      item1 = types.KeyboardButton('Седан')      item2 = types.KeyboardButton('Кроссовер')      item3 = types.KeyboardButton('Универсал')      item4 = types.KeyboardButton('Джип')      item5 = types.KeyboardButton('Минивен')      back = types.KeyboardButton('◀ Назад')      markup.add(item1,item2,item3,item4,item5,back)      bot.send_message(message.chat.id, '????Прайс услуг', reply_markup= markup)    elif message.text == '❗ Акции':      bot.send_message(message.chat.id, 'Скидка 10% для такси на все виды мойки с 00:00 до 06:00 утра!')    elif message.text == '✆ Контакты':      bot.send_message(message.chat.id, 'Автомойка находится по адресу ул. Петра Подзолкова 28/1\nГрафик работы: с Пн по Вс (Без выходных)\nВремя рабоы: с 09:00 до 22:00\nТелефон для связи: 214-50-50')    elif message.text == '???? Запись':        global name        name = message.text        bot.send_message(message.chat.id, 'Введите ФИО:',reply_markup=types.ReplyKeyboardRemove())        bot.register_next_step_handler(message, get_time)    elif message.text == '⚜ Premium услуги':      markup = types.ReplyKeyboardMarkup(resize_keyboard=True)      item1 = types.KeyboardButton('★Седан★')      item2 = types.KeyboardButton('★Кроссовер★')      item3 = types.KeyboardButton('★Универсал★')      item4 = types.KeyboardButton('★Джип★')      item5 = types.KeyboardButton('★Минивен★')      back = types.KeyboardButton('◀ Назад')      markup.add(item1,item2,item3,item4,item5,back)      bot.send_message(message.chat.id, '⚜ Premium услуги', reply_markup= markup)    elif message.text == '◀ Назад':      markup = types.ReplyKeyboardMarkup(resize_keyboard=True)      item1 = types.KeyboardButton('???? Прайс услуг')      item2 = types.KeyboardButton('⚜ Premium услуги')      item3 = types.KeyboardButton('❗ Акции')      item4 = types.KeyboardButton('???? Запись')      item5 = types.KeyboardButton('✆ Контакты')      markup.add(item1,item2,item3,item4,item5)      bot.send_message(message.chat.id,'◀ Назад',reply_markup=markup)    elif message.text == 'Кроссовер':      bot.send_message(message.chat.id,'✅ Комплексная мойка (верх салона) - 600 руб.\n✅ Мойка кузова (с пеной и протиркой) - 300 руб.\      \n✅ Отбить (без пены и протирки) - 120 руб.\n✅ Отбить с пеной (без протирки) - 200 руб.\n✅ Двигатель - 500 руб.\      \n✅ Багажник - 100 руб.\n✅ Полироль пластика - 200 руб.\n✅ Кондиционер кожи - 400 руб.\n✅ Мойка стекол - 100 руб.\      \n✅ Пылесос салона - 150 руб.\n✅ Стирка ковров - 100 руб.\n✅ Мойка резиновых ковров - 100 руб.(4 шт.)\      \n✅ Воск - 150 руб.\n✅ Чернение резины - 100 руб.\n✅ Удаление насекомых - 100 руб.\n✅ Полимер дял кузова - 500 руб.\      \n✅ Удаление битума(скотч) - от 100 руб. за элемент\n✅ Удаление тонировки: 150 руб. - боковые, 300 руб - лобовое\      \n✅ Стирка ковров: синтетика - 100 руб.; натуральный - 120 руб.; длинный ворс - 150 руб.')    elif message.text == 'Седан':      bot.send_message(message.chat.id,'✅ Комплексная мойка (верх салона) - 700 руб.\n✅ Мойка кузова (с пеной и протиркой) - 400 руб.\