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)
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]
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]
def send_sys_msg(self, stanza, body): """ 发送系统消息 """ members = get_members() [self.send_message(stanza, m, body) for m in members]