所以我想说的第一件事:我一直在研究模块等,我只是不安静知道如何重写它以适应此。我如何将我的Python文件分成多个插件?
项目:我有什么是一个Skype机器人使用Skype4Py模块。我有大约11个命令,我注意到一个脚本变得有点大。
我想要考虑如何将一个main.py文件链接到一个插件文件夹,该文件夹包含它自己可敬的Python文件中的每个bot函数。这听起来很简单,除了涉及如何调用函数时。
这只是我的Skype机器人的一个基本的视图,缺少一些较大的功能。
import Skype4Py, random
class SkypeBot():
def __init__(self):
self.skype = Skype4Py.Skype()
if self.skype.Client.IsRunning == False:
self.skype.Client.Start()
self.skype.Attach()
self.results = ['Yes', 'No', 'Maybe', 'Never']
def main(self):
print ' Skype Bot currently running on user: %s' % self.skype.CurrentUserHandle
print "\n\nCommands Called:\n"
while True:
self.skype.OnMessageStatus = self.RunFunction
def RunFunction(self, Message, Status):
if Status == 'SENT' or Status == 'RECEIVED':
cmd = Message.Body.split(' ')[0]
if cmd in self.functions.keys():
self.context = Message
self.caller = self.context.FromHandle
self.functions[cmd](self)
def ping(self):
print " %s : Ping" % self.caller
self.context.Chat.SendMessage('Pong')
def say(self):
try:
response = self.context.Body.split(' ', 1)
if response[1] == "-info":
print " %s : say -info" % self.caller
self.context.Chat.SendMessage("Resends the message entered. \n"
"Usage: !say Hello. \n"
"Example: Bot: Hello.")
else:
say = response[1]
print " %s : Say [%s]" % (self.caller, say)
self.context.Chat.SendMessage(say)
except:
self.context.Chat.SendMessage("Please use -info to properly use the !say command")
def eightball(self):
try:
question = self.context.Body.split(' ', 1)
if question[1] == "-info":
print " %s : 8Ball -info" % self.caller
self.context.Chat.SendMessage("Responds with an answer.\n"
"Usage: !8ball 'Do I have swag?'\n"
"Example: !8Ball Response: 'Yes'")
else:
random.shuffle(self.results)
answer = self.results[3]
print " %s : 8Ball [%s]" % (self.caller, question[1])
self.context.Chat.SendMessage("!8Ball Response: %s" % answer)
except:
self.context.Chat.SendMessage("Please use -info to properly use the !8ball command")
#FUNCTIONS LIST
#********************
functions = {
"!ping": ping,
"!say": say,
"!8ball": eightball,
}
if __name__ == "__main__":
snayer = SkypeBot()
snayer.main()
所以基本上,我想知道,我怎样才能改变
self.skype.OnMessageStatus = self.RunFunction
,以便它会从另一个文件中运行的功能呢?
尝试写入文件的名称,然后是类(如果有的话)和模块。 'import Skype4Py',然后通过编写'Skype4Py.a_name()'在'Skype4Py'中调用模块a_name()。让我知道这是否工作或您有任何问题。 – Anthony 2014-10-28 03:00:09
我唯一的问题是我不安静地理解我应该如何听特定的命令来调用,因为从目前我从同一个文件调用它,但如果我混合它,我不知道如何倾听命令的调用。 – user2364549 2014-10-28 03:32:31
它应该是相同的,除了你加上模块名称的前缀。和使用'random'模块一样,除了你创建模块。至于模块本身,你可以用和你在同一个文件中一样的方式编写它。 – Anthony 2014-10-28 19:30:03