尝试根据IRC用户输入调用函数

时间:2016-11-19 15:22:37

标签: python

我对Python很新,但对编程并不陌生。基本上,我试图根据来自IRC频道的用户输入调用某些功能/程序来模拟键盘/鼠标。

我正在抽搐地运行一个IRC机器人,就像抽搐一样。我知道如何模拟键盘和鼠标输入,但我很难搞清楚如何有效地做到这一点。

我有一个机器人类,它的开头就像:

class bot:
def __init__(self):
    ...
    login stuff
    ...
    self.options = {'!test': self.command_test,
    'q': self.quickSave,
    'f': self.forward,
    'ff': self.forward2,
    'fff': self.forward3
    }
    ...

然后在机器人解析IRC聊天输入时调用函数,如下所示:

def parse_message(self, msg):
    if len(msg) >= 1:
        msg = msg.split(' ')
        if msg[0] in self.options:
            self.options[msg[0]]()

我有很多功能,基本上只重复相同。 (前进,前进2,前进3,左,左2,左3等)。一遍又一遍地重复相同的功能是没有意义的。我无法弄清楚如何有效地调用这些函数,如forward(1),forward(2),forward(3)等。

我希望我的代码看起来像这样:

def forward(self, num):
    for x in range(1, num):
        #Simulate walking forward

我只是想弄清楚如何使用简单的文本输入向forward()添加参数。这对我来说很难解释,想象一下有一百人投票在IRC频道中移动/瞄准视频游戏。

同样,我没有要求帮助模仿鼠标/键盘输入。我只需要有关如何使用文本来调用函数的建议。

如果它有助于您理解,我试图躲避坠落4

1 个答案:

答案 0 :(得分:0)

因此,每个命令实际上都是一个符号,重复一个符号n次意味着调用相关函数的次数相同,对吗?

假设command是一串没有空格的符号,可以这样做:

command = #get command

for char in command:
    your_dict[char]()

顺便说一下,确实不需要检查字典是否包含指定的命令。只需将调用包装到try/except块中:

try
   your_dict[char]()
except KeyError:
    # this is OK, tell the user that it's an error
except:
    # this means that some of the functions has raised an error