예제 #1
0
파일: cmd.py 프로젝트: beiliubei/clubot
    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)
예제 #2
0
파일: cmd.py 프로젝트: beiliubei/clubot
 def rm(self, stanza, *args):
     """剔除用户"""
     # XXX 没有效果
     emails = [get_member(nick=n) for n in args]
     if len(emails) < 1:
         return self.help(stanza, "rm")
     for e in emails:
         jid = JID(e)
         del_member(jid)
         self._message_bus.send_unsubscribe(jid)
예제 #3
0
파일: clubot.py 프로젝트: beiliubei/clubot
 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]
예제 #4
0
파일: cmd.py 프로젝트: beiliubei/clubot
 def mt(self, stanza, *args):
     """单独给某用户发消息"""
     if len(args) <= 1:
         return self.help(stanza, "msgto")
     nick = args[0]
     receiver = get_member(nick=nick).get("email")
     if receiver == stanza.from_jid.bare().as_string():
         self._send_cmd_result(stanza, "请不要自言自语")
         return
     body = " ".join(args[1:])
     if not receiver:
         self._send_cmd_result(stanza, "%s 用户不存在" % nick)
     else:
         self._message_bus.send_private_msg(stanza, receiver, body)
예제 #5
0
파일: cmd.py 프로젝트: beiliubei/clubot
 def _show_nicks(self, stanza, nicks):
     """ 显示所有昵称的信息 """
     emails = [get_member(nick=n) for n in nicks]
     infos = [self._whois(e.get("email")) for e in emails]
     body = "\n\n".join(infos)
     self._send_cmd_result(stanza, body)