机器人通过电报监视和控制计算机

您在说什么机器人?


这是我自己使用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()#  

接下来,我创建一个函数,该函数将在PC上向用户显示一条消息:

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的机器人的电报中找到
如下所示:图片
接下来,给他写一个创建新bot的命令,该命令看起来像这样:/ newbot

图片
接下来,随便调用您的bot,但需要单独命名它,即这样世界上就没有这样的机器人了,例如:BotStepana3215。



接下来,您需要输入您的机器人的名称,并确保在“ bot”前面加上一个前缀,例如,我将这样称呼它:BotStepana3215_bot:



@BotFather会给您机器人的令牌,它看起来像这样:



无法将此令牌授予任何其他人,因为它可以更换机器人。

而且仍然需要复制令牌,将其保存在文本文件中的某个位置(从那里复制更方便),运行程序并在其中输入令牌。

现在,您可以写入刚创建的机器人(可以在姓氏搜索电报中找到,在我的情况下为@ BotStepana3215_bot),我从其功能中列出的所有内容都将为您服务。

哪里有这样的机器人?


这里我在github上有.exe和.py,

但是.exe仅适用于Windows10。请

享受该程序并撰写评论。

祝好运

All Articles