我对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
答案 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