带参数的Skype4py!命令

时间:2013-06-08 18:37:59

标签: python skype skype4py

我目前有一个skypebot,当我使用以下代码时,它会回复命令和ping网站:

 if Status == 'SENT' or (Status == 'RECEIVED'):
    if Message.Body.lower() == '!ping google':
        ping = os.system("ping google.com")
        if ping == 0:
            Message.Chat.SendMessage("Online!")
        else:
            Message.Chat.SendMessage('Offline!')

这是有效的,如果网站在线,它将显示在线!在聊天中。但是,它要求我事先定义网站。我已经搜索了好几个小时,试图找到我将如何做到这一点,我可以做!ping [网站]并允许用户随时使用他们想要的任何网站。有任何想法吗?

2 个答案:

答案 0 :(得分:0)

我会做这样的事情:

body = Message.Body

if body.startswith('!'):
    parts = body.split()    # ['!ping', 'google.com']
    command = parts[0][1:]  # 'ping'

    result = commands[command](*parts[1:]) # Calls `ping` with 'google.com'
    Message.Chat.SendMessage(result)  # Prints out the resulting string

现在,您可以定义简单的函数:

def ping(url):
    if os.system("ping " + url) == 0:
        return 'Online!'
    else:
        return 'Offline!'

并将它们添加到命令字典中:

commands = {
    'ping': ping
}

os.system()如果您期待任意用户输入是不安全的,那么我会使用subprocess.Popen代替(或者只是尝试使用Python连接到网站)。

答案 1 :(得分:0)

我也有SkypeBot。 我用http://www.downforeveryoneorjustme.com/
我是这样做的:
Functions.py

    def isUP(url):
try:
    source = urllib2.urlopen('http://www.downforeveryoneorjustme.com/' + url).read()
    if source.find('It\'s just you.') != -1:
        return 'Website Responsive'
    elif source.find('It\'s not just you!') != -1:
        return 'Tango Down.'
    elif source.find('Huh?') != -1:
        return 'Invalid Website. Try again'
    else:
        return 'UNKNOWN'
except:
    return 'UNKNOWN ERROR'    


对于 commands.py

                        elif msg.startswith('!isup '):
                    debug.action('!isup command executed.')
                    send(self.nick + 'Checking website. Please wait...')
                    url = msg.replace('!isup ', '', 1)
                    url = functions.getCleanURL(url)
                    send(self.nick + functions.isUP(url))

当然在commands.py文件中使用“import functions”
我相信你可以改变这一点,以便检查网站的机器人状态。
祝你好运:)