Как создать Бота в Телеграм [Python]

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Дорогой друг, если ты читаешь эту статью, то ты наверняка хочешь научится создавать ботов в телеграмме. Но спешу тебя огорчить, если ты полный 0 в программировании, да и собственно в языке Python, то тебе стоит посмотреть парочку видео уроков, чтобы понять что тут происходит, ну а если ты и без подготовки сможешь понять весь этот обьем информации, то вообще красавчик!

Я решил, что в этом примере, я буду освещать написания бота, который будет высылать нам рандомные четверостишия, да да, бот будет простым, но начинать надо с малого

Итак, давайте же уже преступим к написанию кода.

Для начала нам нужно установить библиотеку pyTelegramBotAPI

Пишем в терминале эту команду -

Python:
pip install pyTelegramBotAPI


Затем мы залетаем к Бате Боту(BotFather ) в Телеграмме и берем у него токен.

Ну считай, что пол дела сделано, и легкая часть закончилась

Заходим в вашу среду разработки, лично я юзаю PyCharm
Создаем main.py и импортируем все необходимые библиотеки

Python:
import telebot
from telebot import types

Далее к нашей программе подключаем TOKEN, который выдал вам BotFather
Python:
bot = telebot.TeleBot('Тут ваш токен')

Теперь сделаем так, чтобы бот реагировал на начальную команду /start и отправлял какое-либо приветственное сообщение
Python:
@bot.message_handler(commands=['start'])
def get_docs(message):
    bot.send_message(message.chat.id, 'Привет, я твой бот!')

И в самом конце кода добавим, чтобы наш бот не вырубался сразу после того, как мы его запустим
Python:
while True:
    bot.polling()

Ну и давайте посмотрим, что наш бот теперь умеет.

Снимок экрана 2020-01-28 в 19.49.24.png


Так, уже не плохо, но давайте вернемся к функционалу, который я задумал

Создадим теперь список со стишками


Python:
poems = []

first = '''И труд нелеп, и бестолкова праздность,
И с плеч долой всё та же голова,
Когда приходит бешеная ясность,
Насилуя притихшие слова.
'''
second ='''Природа с красоты своей
Покрова снять не позволяет,
И ты машинами не вынудишь у ней,
Чего твой дух не угадает.
'''
third = '''- Это кто упал? Серёжа?
- Нет, не он, - его одёжа.
- Что же стукнула одёжа?
- В середине был Серёжа.
'''
poems.append(first)
poems.append(second)
poems.append(third)

Теперь, давайте создадим клавиатуру

Python:
markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
itembtn1 = types.KeyboardButton('Хочу стих')
markup.add(itembtn1)

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


Python:
import telebot
from telebot import types
import random


bot = telebot.TeleBot('980646645:AAHPWjFk8P5lMXxoC2sIHptVTRHGk_CDmd0')
@bot.message_handler(commands=['start'])
def get_docs(message):
        bot.send_message(message.chat.id, 'Привет, я твой бот!')
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        itembtn1 = types.KeyboardButton('Хочу стих')
        markup.add(itembtn1)
        bot.send_message(message.chat.id, "Что ты хочешь?", reply_markup=markup)


first = '''И труд нелеп, и бестолкова праздность,
И с плеч долой всё та же голова,
Когда приходит бешеная ясность,
Насилуя притихшие слова.
'''
second ='''Природа с красоты своей
Покрова снять не позволяет,
И ты машинами не вынудишь у ней,
Чего твой дух не угадает.
'''
third = '''- Это кто упал? Серёжа?
- Нет, не он, - его одёжа.
- Что же стукнула одёжа?
- В середине был Серёжа.
'''
poems.append(first)
poems.append(second)
poems.append(third)

while True:
    bot.polling()

Так, ну и что же нам осталось? Нам осталось сделать, чтобы бот реагировал на кнопку клавиатуры
Это будет очень похоже, на то что мы сделали со стартовым обращением, только бот будет теперь реагировать на текст

Python:
@bot.message_handler(content_types=['text'])
def send_poem(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    itembtn1 = types.KeyboardButton('Хочу стих')
    markup.add(itembtn1)
    if message.text == 'Хочу стих':
        bot.send_message(message.chat.id, random.choice(poems), reply_markup=markup)
    else:
        bot.send_message(message.chat.id, 'Нет такой команды(')

Ну и давайте протестируем!


Снимок экрана 2020-01-28 в 20.21.02.png

Вроде бы все работает!

И теперь вот так выглядит готовый код нашего простого бота
Python:
import telebot
from telebot import types
import random


bot = telebot.TeleBot('980646645:AAHPWjFk8P5lMXxoC2sIHptVTRHGk_CDmd0')
@bot.message_handler(commands=['start'])
def get_docs(message):
        bot.send_message(message.chat.id, 'Привет, я твой бот!')
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        itembtn1 = types.KeyboardButton('Хочу стих')
        markup.add(itembtn1)
        bot.send_message(message.chat.id, "Что ты хочешь?", reply_markup=markup)

@bot.message_handler(content_types=['text'])
def send_poem(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    itembtn1 = types.KeyboardButton('Хочу стих')
    markup.add(itembtn1)
    if message.text == 'Хочу стих':
        bot.send_message(message.chat.id, random.choice(poems), reply_markup=markup)
    else:
        bot.send_message(message.chat.id, 'Нет такой команды(')
poems = []

first = '''И труд нелеп, и бестолкова праздность,
И с плеч долой всё та же голова,
Когда приходит бешеная ясность,
Насилуя притихшие слова.
'''
second ='''Природа с красоты своей
Покрова снять не позволяет,
И ты машинами не вынудишь у ней,
Чего твой дух не угадает.
'''
third = '''- Это кто упал? Серёжа?
- Нет, не он, - его одёжа.
- Что же стукнула одёжа?
- В середине был Серёжа.
'''
poems.append(first)
poems.append(second)
poems.append(third)

while True:
    bot.polling()

Спасибо что прочитали мою статью, не судите строго, она у меня такая первая(Полномасштабная)
В следующей статье, мы подключим базу данных к боту, чтобы мы могли вести статику пользователей, личный кабинет пользователя и оплату с автоматическим зачислением QIWI (Ну чтоб была), да и запустим его на бесплатном сервере

Напишите, если вам будет интересная статья о создание бота, но уже в ВК, которого можно добавлять в беседы и т.д



p.s Вы также можете у меня ботов заказать для своих нужд)


 
Последнее редактирование:

Bladdos

Резидент
Статус
offline
Регистрация
18.02.2017
Сообщения
243
Репутация
253
Красава, продолжай!
 

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Красава, продолжай!
Спасибо)

Я как раз эту серию статей начал
Потому что вообще нигде не видел разборов по работе с Qiwi API в Python и БД одновременно
Может быть эти статьи помог людям поднять немножко(может и много) деньжат
 

nerusru

Резидент
Статус
offline
Регистрация
03.08.2016
Сообщения
184
Репутация
151
Делай на чистом api, зачем тебе эти библиотеки?
 

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Делай на чистом api, зачем тебе эти библиотеки?
Хах, ну я так привык
Я когда делал на чистом, мне показалось все это некрасивым , а с библиотекой все аккуратненько и чисто
 

nerusru

Резидент
Статус
offline
Регистрация
03.08.2016
Сообщения
184
Репутация
151
Хах, ну я так привык
Я когда делал на чистом, мне показалось все это некрасивым , а с библиотекой все аккуратненько и чисто
Ну определяешь функцию под каждый запрос. Что не красивого тут ?
 

Вложения

  • 412412.PNG
    412412.PNG
    21.6 KB · Просмотры: 50

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Ну во первых с библиотеками всегда проще, да и понятнее,
Если бы я начал тут расписывать, что да как делать именно с прямыми запросами тут людям не всем понятно было бы
Да и во вторых я привык, что если можно обойтись без запросов, и юзать библиотеку , не теряя нужного функционала , то надо юзать библиотеку
 

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38
Извините, забыл упомянуть, если вы в Рашке, то надо включить VPN на компе, чтобы тестировать бота
 

MadoxX

Новичок
Статус
offline
Регистрация
13.09.2019
Сообщения
39
Репутация
6
Интересная статья. Когда только знакомился со всеми этими ботами, перерыл весь инет так и не нашел. И очень долго со всем этим разбирался. Буду ждать вторую. От души!
 

inonameuser

Резидент
Статус
offline
Регистрация
10.12.2019
Сообщения
198
Репутация
167
Интересно, подписался на темку
 

inonameuser

Резидент
Статус
offline
Регистрация
10.12.2019
Сообщения
198
Репутация
167
Не совсем понял как теперь все это, что мы писали в питоне экспортировать в телеграм нашему боту
 

Orale

Участник
Статус
offline
Регистрация
08.04.2018
Сообщения
30
Репутация
38

Setupchik17

Местный
Статус
offline
Регистрация
17.09.2016
Сообщения
74
Репутация
55
Так совет тебе, если хочеш выложить все полностью уже готовый код (наподобее как в конце поста твоего) то используй функцтю спойлер+код
А вообще для таких целей лучше пользоваться сервисом http://pastebin.com/
 

Setupchik17

Местный
Статус
offline
Регистрация
17.09.2016
Сообщения
74
Репутация
55
ой это не тебе) У тебя все "ОК"
 

ndsrich

Участник
Статус
offline
Регистрация
12.11.2019
Сообщения
37
Репутация
32
супер пост ! а есть у тебя телеграм с уроками ?
 

Давыдыч

Резидент
Статус
offline
Регистрация
19.08.2016
Сообщения
290
Репутация
187
Боты теперь через впн не запускаются, почему-то, может это у меня так.
Идет подключение напрямую к апи телеги, к которому не подключается с впн