Что нового?

Статья Создание бота на Python для Telegram

es3n1n

Модератор форума
Интересующийся

es3n1n

Модератор форума
Интересующийся
Статус
Оффлайн
Регистрация
11 Янв 2019
Сообщения
40
Реакции
7
В данной статье я вам покажу, как сделать бота для телеги на питоне. В этом ничего сложного нет:beach:

1. Качаем питон 3.6(
You cant view this link please login.
), только в установке прожмите Add python 3.6 to path

2. Открываем консоль и хуярим туда это
Bash:
pip install pytelegrambotapi
2JQuUsR.png


3. Создаем в любом месте папку, в которой создаем еще 3 файла. config.py, bot.py, run.bat
KrUzvsL.png
(у вас будут другие иконки, у меня просто IDE стоит, если будете дальше кодить на питоне, то советую ее поставить(
You cant view this link please login.
))

4. Сначала заполняем батник этим кодом
Bash:
@echo off
py bot.py
pause
@echo off - отключаем возможность инпута
py bot.py - запускаем самого бота
pause - если у бота будет ошибка, чтобы консоль сразу же не закрылась

5. Открываем config.py и вписываем туда этот код
Python:
bottoken = "token_from_botfather" #Токен бота
logchannelid = 0 #ID канала в котором будет храниться лог

6. Пока что не трогаем наш конфиг и идем создавать самого бота в телеге. Открываем телегу и ищем бота по такому Username -
You cant view this link please login.


7. Пишем боту /newbot и заполняем то, что от нас требуется
S1YP0Vu.png
который вставим в конфиг*

8. Заполняем конфиг, в 1 строку вписываем токен, который скопировали в BotFather, чтобы полчилось примерно так
Python:
bottoken = "XXXXXXX:CENSORED" #Токен бота
logchannelid = 0 #ID канала в котором будет храниться лог
logchannelid пока что не трогаем

9. И так, начинаем писать сам код бота в bot.py. Первое что мы сделаем, это прием сообщений через лонгполл
Python:
import telebot # Импортируем нашу либу, которую скачали во 2 шаге
import config # Импортируем config.py

bot = telebot.TeleBot(config.bottoken) # Юзая либу инициализируем сам объект бота, используя из конфига токен

try: # Пытаемся запустить бесконечный поллинг бота
    bot.infinity_polling()
except Exception as e: # Если не можем, то записывем ошибку в перменную e
    print("Error in polling: ") # Сообщаем, что не можем принять евенты от телеги
    print(str(e)) # Выводим на экран ошибку
#Скрипт закрывается, если была ошибка
В коде на каждой строке есть коменты, что где происходит, если что-то не понятно, то задавайте вопросы в теме, мне проще писать коменты в коде xD

10. Если сейчас запустим, то наш бот делать не будет, давайте научим его принимать команду '/start'
Python:
import telebot # Импортируем нашу либу, которую скачали во 2 шаге
import config # Импортируем config.py

bot = telebot.TeleBot(config.bottoken) # Юзая либу инициализируем сам объект бота, используя из конфига токен

@bot.message_handler(commands=['start'])
def onstart(message):
    print(message.json) # Выводим весь класс сообщения для дебага
    #bot.reply_to(message, "Привет, юзвер")  # Ответ на сообщение с реплаем методом reply_to
   # bot.send_message(message.chat.id, "Привет, юзвер") # Ответ на сообщение просто сообщением в чат
    #bot.send_message(message.chat.id, "Привет, *юзвер*", parse_mode="Markdown") # Ответ на сообщение просто в чат с Markdown
    bot.send_message(message.chat.id, "Привет, *юзвер*", reply_to_message_id=message.message_id, parse_mode="Markdown") # Ответ на сообщения реплаем на сообщение с командой с парсингом Markdown.
    #Одно и то же, что и bot.reply_to(message, "Привет, *юзвер*", parse_mode="Markdown")

try: # Пытаемся запустить бесконечный поллинг бота
    bot.infinity_polling()
except Exception as e: # Если не можем, то записывем ошибку в перменную e
    print("Error in polling: ") # Сообщаем, что не можем принять евенты от телеги
    print(str(e)) # Выводим на экран ошибку
#Скрипт закрывается, если была ошибка

11. Открываем run.bat и стартуем бота, и видим примерно такое
qzrxU1z.png


12. Теперь настроем лог. Создаем канал в телеге, пишем в него все что угодно и пересылаем это сообщение боту, реплаем пишем /start, потом из консоли копируем это значение.
NApVH4A.png


13. Вписываем айди канала с логом в конфиг.
Python:
logchannelid = -1001343528653 #ID канала в котором будет храниться лог

14. Добавим функцию лога, которую будем вызвать, когда нужно залогировать сообщение. И добавляем бота в канал как админа, чтобы он мог постить сообщения
Python:
import telebot # Импортируем нашу либу, которую скачали во 2 шаге
import config # Импортируем config.py

bot = telebot.TeleBot(config.bottoken) # Юзая либу инициализируем сам объект бота, используя из конфига токен

@bot.message_handler(commands=['start'])
def onstart(message):
    #print(message.json) # Закоментил, т.к. уже не нужно получить айди канала
    #bot.reply_to(message, "Привет, юзвер")  # Ответ на сообщение с реплаем методом reply_to
   # bot.send_message(message.chat.id, "Привет, юзвер") # Ответ на сообщение просто сообщением в чат
    #bot.send_message(message.chat.id, "Привет, *юзвер*", parse_mode="Markdown") # Ответ на сообщение просто в чат с Markdown
    log(message)
    bot.send_message(message.chat.id, "Привет, *юзвер*", reply_to_message_id=message.message_id, parse_mode="Markdown") # Ответ на сообщения реплаем на сообщение с командой с парсингом Markdown.
    #Одно и то же, что и bot.reply_to(message, "Привет, *юзвер*", parse_mode="Markdown")

def log(msg):
    logstr = "Юзер с айди " + msg.from_user.id + " отправил мне " + message.text
    print(logstr)
    bot.send_message(config.logchannelid, logstr)

try: # Пытаемся запустить бесконечный поллинг бота
    bot.infinity_polling()
except Exception as e: # Если не можем, то записывем ошибку в перменную e
    print("Error in polling: ") # Сообщаем, что не можем принять евенты от телеги
    print(str(e)) # Выводим на экран ошибку
#Скрипт закрывается, если была ошибка

15. Теперь вы можете по такому шаблону добавлять команды. Так же
You cant view this link please login.
ссылка на репозиторий либы, там можете чекать методы
Python:
@bot.message_handler(commands['command'])
def oncommand(message):
    bot.reply_to(message, "Hello, World")

та вроде все, либа самая простая, потом мб завезу еще гайд на другую либу
 
Последнее редактирование:
  • Мне нравится
Реакции: Dust
Сверху