好的,所以我在python中创建了一个bot框架,而且我在创建一个twitter命令时遇到了问题。我不确定这对其他人有多大意义,我想我尽力解释这个,所以如果我能提供更多的信息或代码,请告诉我。
所以,我的twitter命令看起来像这样
@Command(name="tweets", aliases="tweet")
def tweets(chat, message, args, sender):
if len(args) == 0:
chat.SendMessage("Provide a user")
return
def get_tweets():
consumer_key = JakeBot.conf.get_value("twitter_api-key")
consumer_secret = JakeBot.conf.get_value("twitter_api-secret")
access_token_key = JakeBot.conf.get_value("twitter_access")
access_token_secret = JakeBot.conf.get_value("twitter_access-secret")
api = twitter.Api(consumer_key, consumer_secret, access_token_key, access_token_secret)
public_tweets = api.GetUserTimeline(api.GetUser(args[0]).id)
return public_tweets
print get_tweets()[0].text
现在,这是我的标准命令格式,适用于任何命令。
我通过搜索命令名称并获取函数并在一个单独的线程中调用它来调用我的命令,如下所示:
func = commands[command]
thread.start_new_thread(func, (message.Chat, message.Body, get_args(args), message.Sender))
这适用于我的所有其他命令,例如!echo
作为参考,我使用以下lib作为twitter:https://code.google.com/p/python-twitter/
现在,问题是应用程序“挂起”:
api = twitter.Api(consumer_key, consumer_secret, access_token_key, access_token_secret)
我通过命令包中的文件阅读器加载我的命令模块,我不认为是我的问题。但是,如果我把它放在快速测试模块中,它可以很好地工作,并打印我最新的推文。相反,当我如前所述调用它时,它会依赖于创建twitter API的实例,而且我真的不知道为什么,即使经过数小时的调试。