コード例 #1
0
    def __init__(self):

        self.loadConfiguration("twitter.ini")
        self.authorizeAPI()
        self.ChatManager = ChatManager()
        self.replyCharacterLimit = 140
        self.replySuffix = "..."
        self.splitSuffixLength = len(self.replySuffix)
コード例 #2
0
def run():
    """
    主程序入口
    :return: None
    """
    print('开始运行')
    chatManager = ChatManager()
    print('chatManager创建成功')
    chatManager.run()
コード例 #3
0
 def __init__(self):
   if(self.__state):
     self.__dict__ = self.__state
   else:
     self.configProvider = ConfigProvider()
     self.gatesProvider = GatesProvider()
     self.chatMgr = ChatManager()
コード例 #4
0
class InterChatDispatcher():
  __state = {}
  def __init__(self):
    if(self.__state):
      self.__dict__ = self.__state
    else:
      self.configProvider = ConfigProvider()
      self.gatesProvider = GatesProvider()
      self.chatMgr = ChatManager()
  def launch(self):
    #launch irc
    irc_config = self.configProvider.getConfigSection('irc');
    self.irc_thread = IRCThread( irc_config['host'], irc_config['port'], irc_config['nick'], irc_config['channels'], self)
    self.connexion = self.irc_thread.getConnexion()
    self.irc_thread.start()
    self.skype_thread = InterChatSkypeThread(self)
    self.skype_thread.start()
  def dispatchIRCCommand(self, nick, message, channel):
    print "Message: "+message+" From " + channel
    return "oui"

  def dispatchMessageToChannel(self, channel, message):
    channelTo = self.chatMgr.getChanelByAlias(channel)
    if(channelTo['type'] == 'irc'):          
      self.irc_thread.writeToChannel(message, channelTo['channel'])
    if(channelTo['type'] == 'skype'):
      self.skype_thread.writeToChannel(message, channelTo['channel'])

  def messageToChannel(self, channel, message, nick=""):
    parts = message.split(" ")
    if(len(parts) > 1 and self.chatMgr.getChanelByAlias(parts[1])):
        channelTo = self.chatMgr.getChanelByAlias(parts[1])
        body = message.replace("!tele "+parts[1],"")         
        rmessage = "tele from {0}@{1}: {2}".format(nick, channel, body)
        if(channelTo['type'] == 'irc'):          
          self.irc_thread.writeToChannel(rmessage, channelTo['channel'])
        elif(channelTo['type'] == 'skype'):
          self.skype_thread.writeToChannel(rmessage, channelTo['channel'])
  def helpToChannel(self, channel, message):
    with open('config/help.txt','r') as f:
      for i,l in enumerate(f):
        self.dispatchMessageToChannel(channel, l)
  def getChannelList(self):
    return self.chatMgr.getAliases()
  def dispatchMessage(self, chatname, sendername, body):
#    print body
    channel = self.chatMgr.getChanelById(chatname)
    if( sendername in ['pdobot', 'ictelecom'] ):
      return False;
    for channelTo in self.chatMgr.getAliases():
      channelToFull = self.chatMgr.getChanelByAlias(channelTo)
      if(self.chatMgr.isListening(channelTo, channel['alias'])):
        print "BINGO"
        if (channelToFull['type'] == 'irc'):
          message = "{0}{1}: {2}".format(sendername, channel['alias'], body)
          self.irc_thread.writeToChannel(message, channelTo)
    return False
  def listenChatOn(self, channel1, channel2):
      return self.chatMgr.turnListenOn(channel1, channel2)
  def listenChatOff(self, channel1, channel2):
      return self.chatMgr.turnListenOff(channel1, channel2)      
コード例 #5
0
ファイル: main.py プロジェクト: neerjathakkar/crypto-chatroom
            self.send_error(400, message=e.message)
            return
        except Exception as e:
            print e.message
            self.send_error(400, message=e.message)
            return

        self.set_status(200)
        self.finish()


def init_app():
    """
    Initializes the Tornado web app.
    Registers the used URLs.
    """
    return tornado.web.Application(
        [(r"/", MainHandler), (r"/login", LoginHandler),
         (r"/users", UsersHandler), (r"/conversations", ConversationHandler),
         (r"/conversations/create", ConversationCreateHandler),
         (r"/conversations/([0-9]+)", ConcreteConversationHandler),
         (r"/conversations/([0-9]+)/([0-9]+)?", ConcreteConversationHandler)],
        cookie_secret="6d41bbfe48ce3d078479feb364d98ecda2206edc")


if __name__ == "__main__":
    cm = ChatManager()
    app = init_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
コード例 #6
0
        self.finish()


def init_app():
    """
    Initializes the Tornado web app.
    Registers the used URLs.
    """
    return tornado.web.Application([
        (r"/", MainHandler),
        (r"/login", LoginHandler),
        (r"/getNonce", GetNonceHandler),
        (r"/users", UsersHandler),
        (r"/conversations", ConversationHandler),
        (r"/conversation_active_user/([0-9]+)", ConversationUserHandler),
        (r"/conversations/create", ConversationCreateHandler),
        (r"/conversations/([0-9]+)", ConcreteConversationHandler),
        (r"/conversations/([0-9]+)/([0-9]+)?", ConcreteConversationHandler)
    ],
        cookie_secret="6d41bbfe48ce3d078479feb364d98ecda2206edc"
    )


if __name__ == "__main__":
    cm = ChatManager()
    cm.set_nonce()
    app = init_app()
    print "Server Initialized"
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()
コード例 #7
0
#!/usr/bin/python3

import socket
import logging, Log

from ChatManager import ChatManager

if __name__ == '__main__':
    Log.loginit()
    logging.info("Logging started, host: " + socket.gethostname())

    cm = ChatManager()
    cm.run()
コード例 #8
0
class TwitterBot():
    def __init__(self):

        self.loadConfiguration("twitter.ini")
        self.authorizeAPI()
        self.ChatManager = ChatManager()
        self.replyCharacterLimit = 140
        self.replySuffix = "..."
        self.splitSuffixLength = len(self.replySuffix)

    def loadConfiguration(self, filePath):

        configuration = ConfigParser.ConfigParser()
        configuration.read(filePath)

        self.consumerKey = configuration.get('consumer', 'key')
        self.consumerSecret = configuration.get('consumer', 'secret')
        self.accessToken = configuration.get('accessToken', 'token')
        self.accessTokenSecret = configuration.get('accessToken', 'secret')
        self.accountScreenName = configuration.get('account', 'owner').lower()
        self.accountUserId = configuration.get('account', 'ownerId')

    def authorizeAPI(self):

        self.AuthHandler = OAuthHandler(self.consumerKey, self.consumerSecret)
        self.AuthHandler.set_access_token(self.accessToken,
                                          self.accessTokenSecret)
        self.twitterAPI = API(self.AuthHandler)

    def createStream(self):

        self.streamListener = StreamListenerOverride()
        self.streamListener.setBot(self)
        self.twitterStream = Stream(self.getAuthHandle(), self.streamListener)
        self.twitterStream.userstream(_with='user')

    def getAuthHandle(self):

        return self.AuthHandler

    def handleData(self, data):

        print data
        self.tweet = json.loads(data.strip())
        self.loadTweet()

        if self.tweetId != "None":
            if self.isTweetCreator():
                pass
            else:
                self.replyToTweet()

    def loadTweet(self):

        self.tweetId = str(self.tweet.get('id_str', None))
        self.senderName = str(
            self.tweet.get('user', {}).get('screen_name', None))
        self.tweetText = str(self.tweet.get('text', None))

    def isTweetCreator(self):

        userAccountIDFromTweet = self.tweet.get('user', {}).get('id_str', '')

        return userAccountIDFromTweet == self.accountUserId

    def replyToTweet(self):

        self.replyText = self.ChatManager.getReplyToMessage(self.tweetText)
        self.tagUserInReply(self.senderName)
        self.calculateReplySplitCount()
        self.sendTweets()

    def tagUserInReply(self, userName):

        self.taggedUserText = self.getTaggedUserText(userName)
        self.taggedUserTextLength = len(self.getTaggedUserText(userName))

    def getTaggedUserText(self, userName):

        return '@' + userName + ' '

    def calculateReplySplitCount(self):

        textLength = len(self.replyText)
        self.tweetSplitCount = 0

        while (self.tweetSplitCount * self.replyCharacterLimit) < textLength:
            self.tweetSplitCount = self.tweetSplitCount + 1
            if self.tweetSplitCount > 1:
                textLength = textLength + len(
                    self.replySuffix) + self.taggedUserTextLength
            else:
                textLength = textLength + self.taggedUserTextLength

    def sendTweets(self):

        for replyTweetText in self.getTweetsList():
            self.twitterAPI.update_status(status=replyTweetText,
                                          in_reply_to_status_id=self.tweetId)

    def getTweetsList(self):

        tweets = []

        if self.tweetSplitCount == 1:
            tweets.append(self.taggedUserText + self.replyText)
        else:
            for index in range(0, self.tweetSplitCount):

                splitNumber = index + 1
                text = self.getReplySplitText(splitNumber)
                tweets.append(text)

        return tweets

    def getReplySplitText(self, splitNumber):

        splitStartIndex = self.getReplySplitStartIndex(splitNumber)
        splitEndIndex = self.getReplySplitEndIndex(splitNumber)
        splitReplySuffix = self.getReplySplitSuffix(splitNumber)

        return self.taggedUserText + self.replyText[
            splitStartIndex:splitEndIndex] + splitReplySuffix

    def getReplySplitStartIndex(self, splitNumber):

        textStartIndex = 0

        if splitNumber > 1:
            previousSplitNumber = splitNumber - 1
            replyCharacterLimitIndex = self.replyCharacterLimit * previousSplitNumber
            splitSuffixLengthIndex = self.splitSuffixLength * previousSplitNumber
            taggedUserTextLengthIndex = self.taggedUserTextLength * previousSplitNumber

            textStartIndex = replyCharacterLimitIndex - splitSuffixLengthIndex - taggedUserTextLengthIndex

        return textStartIndex

    def getReplySplitEndIndex(self, splitNumber):

        if splitNumber == self.tweetSplitCount:
            return len(self.replyText)
        else:
            replyCharacterLimitIndex = self.replyCharacterLimit * splitNumber
            splitSuffixLengthIndex = self.splitSuffixLength * splitNumber
            taggedUserTextLengthIndex = self.taggedUserTextLength * splitNumber

            return replyCharacterLimitIndex - splitSuffixLengthIndex - taggedUserTextLengthIndex

    def getReplySplitSuffix(self, splitNumber):

        if splitNumber == self.tweetSplitCount:
            return ""
        else:
            return self.replySuffix