所以我想說的第一件事:我一直在研究模塊等,我只是不安靜知道如何重寫它以適應此。我如何將我的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