https://habr.com/ru/post/498840/О каком боте идет речь?
Речь идет о боте, которого я сам написал используя Python.
Если написать боту «s», то бот сделает скриншот, и пришлет его вам обратно.
Если боту написать «вопрос xxxxxxxxxxxxxxxx?», где xxxxxxxxxxxxxxxx это ваш вопрос, то на весь экран компьютера будет открыто окно, в котором написан ваш вопрос, и форма ответа, после чего человеку предоставиться возможность написать ответ на ваш вопрос, и нажать «Отправить», после чего вам бот вернет то что человек ответил.
Также можете что угодно написать боту, и на компьютере откроется диалоговое окно с кнопкой «ок» и с содержимым которое вы написали.
Как я использовал этого бота
Я его запускал перед своим уходом в магазин, дальше просто заходил в телеграм к боту, и делал скриншоты. Так за компьютер сел мой младший брат, и начал там заниматься своим.
Дальше я написал боту вот такое сообщение: «вопрос, ты зачем сел за компьютер?», а у него это выглядело так:
Ну и мы там с ним попереписовались и по приходу домой договорились что он больше так не будет :)
Как я его писал?
Я давно знаю Python, и знаю его неплохо, поэтому не составило труда написать такого бота.
Для более менее программистов.
Использовал я библиотеки: telebot,PyQt5, sys, tkinter, pyautogui, и все, этого мне хватило.
Вот такой получился исходный код программы:
import telebot as TL# Здесь я получаю библиотеку для работы с ботом через токен
from PyQt5.QtWidgets import QMessageBox# Здесь я импортирую messagebox для создание окна с сообщением
import PyQt5#здесь библиотеку для работы с окнами
import sys# Здесь для работы с системой
from tkinter import *# Здесь для работы с окнами, но с этой библиотекой некоторые вещи будут реализововатся по проще
from pyautogui import screenshot# Здесь из библиотеки pyautogui импортирую функция скриншота
token = input("введите токен бота: ")
def vopros(mess,msg):# Здесь я объявляю новую функцию
def ok_btn(entr,msg,root):# Здесь объявляю функцию в функции, которая будет отвечать за нажатие кнопки "отправить"
msg = msg
root = root
msg("ответ: "+entr.get())
root.destroy()
root = Tk()# Создаю окно tkinter для вопроса
root.geometry("200x200")#задаю этому окну размер
root.attributes("-fullscreen",True)#присваиваю аттрибуты, в том числе что окно будет в полном экране
root.lift()# вызываю функцию lift, она выставит окно поверх дургих
lab = Label(root,text=mess)#создаю надпись, и помещаю в нее вопрос который мы написали в телеграм
entr = Entry(root)#создаю поле ввода
btn_ok = Button(text="Ответить",command=lambda: ok_btn(entr,msg,root))#создаю кнопку "Отправить", и присваиваю ей функцию "ok_btn", также передав в нее параметры: поле ввода, функцию отправки сообщение, окно вопроса
lab.pack()#выставляю надпись
entr.pack()#выставляю поле ввода
btn_ok.pack()##выставляю кнопку "отправить"
root.mainloop()#и зацикливаю окно
def msg_mean(mess):# Создаю функцию сообщение пользователя на ПК
newApp = PyQt5.QtWidgets.QApplication(sys.argv)#создаю новое приложение на PyQt5
msg = QMessageBox()#Создаю окно для сообщения
msg.setWindowTitle("сообщение")#Присваиваю окну с сообщением название
msg.setText(mess)#присваиваю содержание этого окна, мы его написали боту
msg.setIcon(QMessageBox.Critical)#Выставляю иконку для окна сообщения
x = msg.exec_()#запускаю окно
bot = TL.TeleBot(token)#присваиваю переменной "bot", бота вписав туда его токен
@bot.message_handler(commands=['start'])#унаследую элементы класса bot в функцию
def start_message(message):#И эта функция отвечает за самое начало работы бота
# когда мы его находим в телеграм, мы нажимаем кнопку start
#и бот начинает работать
bot.send_message(message.chat.id, 'Привет, началось :)')#и отправляет сообщение "привет началось"
@bot.message_handler(content_types=['text'])#унаследую элементы класса bot в функцию
def send_text(message):#этот метод вызывается телеграмом (библиотекой) всякий раз когда приходит нам сообщение
def msg(message_text):#эта функция для отправки сообщение боту
bot.send_message(message.chat.id, str(message_text))#тут берем id пользователя кторый нам написал, и отправляем ему текст который мы передали ему в функцию
def snd_doc(name_doc):# эта функция похожа на "msg", но отправляет не текст а документ(в нашем случае мы будем отправлять картинку)
bot.send_document(message.chat.id, open(name_doc,"rb"))
if message.text[:6] == "вопрос":#Здесь проверяю написал ли человек боту слово начинающиеся на "вопрос", если да то делаем окно вопроса
vopros(message.text,msg)#Вызываем функцию вопроса которую мы описали выше в коде
else:#в остальных случаях
if message.text == "s":#если человек боту написал "s"
screen = screenshot('s.jpg')#то делаем скриншот
snd_doc("s.jpg")#и отправляем его с помощью функции "snd_doc"
else:#и если же он не написал "s" и не написал "вопрос", значит вывод сообщение на экран
msg_mean(message.text)#Вызываем функцию сообщение которую мы описали выше в коде
while True:#Здесь делаем бесконечный цикл для запуска бота
try:
bot.polling()#здесь запускаем бота
except(BaseException):
pass#и игнорируем все ошибки
#запустили мы бота в цикле потому что бывает он слетает
#а цикл и игнор ошибки его возобновляет
Как видите бот не сложный, но есть баги:
- его можно легко отключить через диспетчер задач,
- если послать много сообщений то она просто слетит.
И к вашему боту может подключиться (если он будет знать как зовут вашего бота) какой-нибудь человек, и понаблюдать за компьютером.
К счастью я знаю как это исправить, и возможно исправлю если вам понравиться такой бот.
Что происходит в боте?
Сначала и инициализирую все библиотеки которые будет использовать бот.
import telebot as TL# Здесь я получаю библиотеку для работы с ботом через токен
from PyQt5.QtWidgets import QMessageBox# Здесь я импортирую messagebox для создание окна с сообщением
import PyQt5#здесь библиотеку для работы с окнами
import sys# Здесь для работы с системой
from tkinter import *# Здесь для работы с окнами, но с этой библиотекой некоторые вещи будут реализововатся по проще
from pyautogui import screenshot# Здесь из библиотеки pyautogui импортирую функция скриншота
Дальше я создаю функцию вопроса:
def vopros(mess,msg):# Здесь я объявляю новую функцию
def ok_btn(entr,msg,root):# Здесь объявляю функцию в функции, которая будет отвечать за нажатие кнопки "отправить"
msg = msg
root = root
msg("ответ: "+entr.get())
root.destroy()
root = Tk()# Создаю окно tkinter для вопроса
root.geometry("200x200")#задаю этому окну размер
root.attributes("-fullscreen",True)#присваиваю аттрибуты, в том числе что окно будет в полном экране
root.lift()# вызываю функцию lift, она выставит окно поверх дургих
lab = Label(root,text=mess)#создаю надпись, и помещаю в нее вопрос который мы написали в телеграм
entr = Entry(root)#создаю поле ввода
btn_ok = Button(text="Ответить",command=lambda: ok_btn(entr,msg,root))#создаю кнопку "Отправить", и присваиваю ей функцию "ok_btn", также передав в нее параметры: поле ввода, функцию отправки сообщение, окно вопроса
lab.pack()#выставляю надпись
entr.pack()#выставляю поле ввода
btn_ok.pack()##выставляю кнопку "отправить"
root.mainloop()#и зацикливаю окно
Дальше я создаю функцию которая будет выводить сообщение пользователю на ПК:
def msg_mean(mess):# Создаю функцию сообщение пользователя на ПК
newApp = PyQt5.QtWidgets.QApplication(sys.argv)#создаю новое приложение на PyQt5
msg = QMessageBox()#Создаю окно для сообщения
msg.setWindowTitle("сообщение")#Присваиваю окну с сообщением название
msg.setText(mess)#присваиваю содержание этого окна, мы его написали боту
msg.setIcon(QMessageBox.Critical)#Выставляю иконку для окна сообщения
x = msg.exec_()#запускаю окно
Дальше можно заняться самим телеграмом и ботом, создаю бота:
bot = TL.TeleBot(token)#присваиваю переменной "bot", бота вписав туда его токен
И создаю первую функцию которая будет отвечать на команду "/start" в телеграмме:
def start_message(message):#И эта функция отвечает за самое начало работы бота
# когда мы его находим в телеграм, мы нажимаем кнопку start
#и бот начинает работать
bot.send_message(message.chat.id, 'Привет, началось :)')#и отправляет сообщение "привет началось"
Дальше также работаем с телеграм, и теперь создаем функцию которая будет принимать сообщение от пользователя:
@bot.message_handler(content_types=['text'])#унаследую элементы класса bot в функцию
def send_text(message):#этот метод вызывается телеграмом (библиотекой) всякий раз когда приходит нам сообщение
И в ней создаем две функции, это msg и snd_doc.
def msg(message_text):#эта функция для отправки сообщение боту
bot.send_message(message.chat.id, str(message_text))#тут берем id пользователя кторый нам написал, и отправляем ему текст который мы передали ему в функцию
def snd_doc(name_doc):# эта функция похожа на "msg", но отправляет не текст а документ(в нашем случае мы будем отправлять картинку)
bot.send_document(message.chat.id, open(name_doc,"rb"))
Дальше принимаем сообщение от пользователя бота, и проверяем что он хотел:
if message.text[:6] == "вопрос":#Здесь проверяю написал ли человек боту слово начинающиеся на "вопрос", если да то делаем окно вопроса
vopros(message.text,msg)#Вызываем функцию вопроса которую мы описали выше в коде
else:#в остальных случаях
if message.text == "s":#если человек боту написал "s"
screen = screenshot('s.jpg')#то делаем скриншот
snd_doc("s.jpg")#и отправляем его с помощью функции "snd_doc"
else:#и если же он не написал "s" и не написал "вопрос", значит вывод сообщение на экран
msg_mean(message.text)#Вызываем функцию сообщение которую мы описали выше в коде
Осталось только запустить бота:
while True:#Здесь делаем бесконечный цикл для запуска бота
try:
bot.polling()#здесь запускаем бота
except(BaseException):
pass#и игнорируем все ошибки
#запустили мы бота в цикле потому что бывает он слетает
#а цикл и игнор ошибки его возобновляет
Вот впрочем и все, так он и работает.
Как воспользоваться таким ботом?
Это может показаться сложным, но если все делать по инструкции то ничего сложного.
инструкция
Находите в телеграм бота под названием @BotFather,
он выглядит вот так:

Дальше пишите ему команду для создание нового бота, команда выглядит вот так: /newbot

Дальше называете своего бота как хотите, но нужно назвать его индивидуальный именем, Т.Е. чтоб в мире больше такого бота не было, например: BotStepana3215.
Дальше вам надо будет придумать фамилию вашего бота, и обязательно с префиксом «bot», я например своего назову вот так: BotStepana3215_bot:
И @BotFather вам выдаст токен вашего бота, выглядит он вот так:
Этот токен нельзя никому постороннему давать, ведь он сможет изменить бота.
И осталось скопировать токен, где-нибудь его сохранить в текстовом файле (удобнее оттуда копировать), запустить программу и вписать туда токен.
И теперь вы можете написать своему боту которого вы только что создали (его можно найти в поиске телеграм по фамилии, в моем случае @BotStepana3215_bot), и у вас будет работать все что я перечислял из его функционала.
Где взять такого бота?
Вот у меня есть на гитхабе .exe и .py
Но .exe только под windows 10.
Наслаждайтесь программой, и пишите отзывы.
Удачи!