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

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

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

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

Добавлен: 12.01.2024

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Лабораторная работа: Создание бота для 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. Хуже от этого точно не будет, так что вполне можете это сделать.
Установка Visual Studio Code



При использовании 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 в VS Code

Чтобы открыть терминал в VS Code, выберите Просмотр> Терминал или используйте клавиши CTRL+` (символ обратного апострофа). Терминалом по умолчанию является PowerShell.

Создание файла проекта

Для того чтобы создать новый файл с расширением .py необходимо выполнить следующие действия: Файл> Создать файл и далее выбрать из выпадающего списка «Файл python».



Далее появится пустое окно созданного файла нашего будущего бота.

Разработка telegram – бота в VS Code

Перед тем как создать telegram – бота нам необходимо подключить перечень нужных нам библиотек для того, чтобы наш бот заработал:

from matplotlib.pyplot import connect

import telebot

import sqlite3

from telebot import types

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

Для установки matplotlib необходимо в терминале VS Code прописать следующее: pip install matplotlib

telebot (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 руб.\