Exemple #1
0
    def mv(self, stanza, *args):
        """ 移动用户到指定频道 """
        if len(args) < 2:
            body = u"Usage: -mv NICK CHANNLE"
            return self._send_cmd_result(stanza, body)
        if args[1] == ".":
            distch = get_info("channel", stanza.from_jid)
        else:
            distch = args[1]
        if args[0] == "*":
            members = get_members(stanza.from_jid)
            emails = [v for v in members if get_info("channel", v) != distch]
        else:
            info = get_member(nick=args[0])
            emails = [info.get("email")]
        channel = get_channel(distch)
        if not emails:
            body = u"{0} 成员不存在".format(args[0])
            return self._send_cmd_result(stanza, body)

        if not channel:
            body = u"{0} 频道不存在".format(args[1])
            return self._send_cmd_result(stanza, body)
        nick = get_nick(stanza.from_jid)
        body = "{0} 将你移动到 {1} 频道".format(nick, distch)
        nicks = []
        for email in emails:
            nicks.append(get_nick(email))
            self._switch_channel(email, distch)
            self._message_bus.send_message(stanza, email, body)
        body = "你将 {0} 移动到 {1} 频道".format(",".join(nicks), distch)
        self._send_cmd_result(stanza, body)
Exemple #2
0
 def handle_roster_received(self, event):
     dbstatus = get_global_info('status')
     if not dbstatus:
         status = STATUS
     else:
         status = dbstatus
     p = Presence(status=status)
     self.client.stream.send(p)
     ret = [x.jid.bare() for x in self.roster if x.subscription == 'both']
     self.logger.info(' -- roster:{0}'.format(ret))
     members = [m for m in get_members()]
     [add_member(frm) for frm in ret if not get_member(frm)]
     if IMPORT:
         [self.invite_member(JID(m)) for m in members if JID(m) not in ret]
Exemple #3
0
    def send_all_msg(self, stanza, body):
        """ 给除了自己的所有成员发送消息 """
        if cityid(body.strip()):
            return self.send_command(stanza, '-_tq ' + body.strip())
        if body.strip() == 'help':
            return self.send_command(stanza, '-help')
        if body.strip() == 'ping':
            return self.send_command(stanza, '-_ping')
        mode = get_info('mode', stanza.from_jid)
        if mode == 'quiet':
            body = u'你处于{0},请使用-cd命令切换到 {1} '\
                    u'后发言'.format(MODES[mode], MODES['talk'])
            return self.send_back_msg(stanza, body)

        add_history(stanza.from_jid, 'all', body)
        members = get_members(stanza.from_jid)
        current = get_info('channel', stanza.from_jid, 'main')
        members = [m for m in members
                   if get_info('channel', m, 'main') == current]
        self.logger.info("{0} send message {1} to {2!r}"
                            .format(stanza.from_jid, body, members))
        nick = get_nick(stanza.from_jid)
        body = "[{0}] {1}".format(nick, body)
        [self.send_message(stanza, m, body) for m in members]
Exemple #4
0
 def send_sys_msg(self, stanza, body):
     """ 发送系统消息 """
     members = get_members()
     [self.send_message(stanza, m, body) for m in members]