Что нового?

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

es3n1n

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

es3n1n

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

1. Качаем питон 3.6(гайд), только в установке прожмите Add python 3.6 to path

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


3. Создаем в любом месте папку, в которой создаем еще 3 файла. config.py, bot.py, run.bat
(у вас будут другие иконки, у меня просто IDE стоит, если будете дальше кодить на питоне, то советую ее поставить(JetBrains PyCharm))

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 - @BotFather

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

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 и стартуем бота, и видим примерно такое


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


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. Теперь вы можете по такому шаблону добавлять команды. Так же вот ссылка на репозиторий либы, там можете чекать методы
Python:
@bot.message_handler(commands['command'])
def oncommand(message):
    bot.reply_to(message, "Hello, World")
та вроде все, либа самая простая, потом мб завезу еще гайд на другую либу
 
Последнее редактирование:
Сверху