def on_message_receive(self, msg): try: triggered = False if msg.content == None: return step = get_step(self, msg.conversation.id) if step: for plugin in self.plugins: if get_plugin_name(plugin) == step['plugin'] and hasattr( plugin, 'steps'): if msg.content.startswith('/next'): plugin.steps(msg, -1) cancel_steps(self, msg.conversation.id) if msg.content.startswith('/done'): plugin.steps(msg, 0) cancel_steps(self, msg.conversation.id) else: plugin.steps(msg, step['step']) else: for plugin in self.plugins: # Always do this action for every message. # if hasattr(plugin, 'always'): plugin.always(msg) # If no query show help # if msg.type == 'inline_query': if msg.content == '': msg.content = '/help' # Check if any command of a plugin matches. # for command in plugin.commands: if 'command' in command: if self.check_trigger(command['command'], msg, plugin): break if 'friendly' in command: if self.check_trigger(command['friendly'], msg, plugin): break if 'shortcut' in command: if len(command['shortcut']) < 3: shortcut = command['shortcut'] + ' ' else: shortcut = command['shortcut'] if self.check_trigger(shortcut, msg, plugin): break except Exception as e: logging.exception(traceback.format_exc()) self.send_alert(traceback.format_exc())
def steps(self, m, step): if step == -1: self.bot.send_message(m, 'ok... :c', extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id) if step == 0: self.bot.send_message(m, 'fine!', extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id) elif step == 1: self.bot.send_message(m, 'ok, now send me your nudes or /cancel', extra={'format': 'HTML'}) set_step(self.bot, m.conversation.id, get_plugin_name(self), 2) elif step == 2: self.bot.send_message(m, '( ͡° ͜ʖ ͡°)', extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id)
def on_message_receive(self, msg): try: ignore_message = False if msg.content == None or (msg.type != 'inline_query' and msg.date < time() - 60 * 5): return # if msg.sender.id != self.config['owner'] and not is_trusted(self, msg.sender.id, msg) and (has_tag(self, msg.conversation.id, 'spam') or has_tag(self, msg.sender.id, 'spam')): # ignore_message = True # self.send_message(msg, self.trans.errors.spammer_detected, extra={'format': 'HTML'}) if msg.sender.id != self.config['owner'] and not is_trusted( self, msg.sender.id, msg) and (has_tag(self, msg.conversation.id, 'muted') or has_tag(self, msg.sender.id, 'muted')): ignore_message = True step = get_step(self, msg.conversation.id) if step: if not ignore_message: for plugin in self.plugins: if get_plugin_name(plugin) == step.plugin and hasattr( plugin, 'steps'): if msg.content.startswith('/cancel'): plugin.steps(msg, -1) cancel_steps(self, msg.conversation.id) if msg.content.startswith('/done'): plugin.steps(msg, 0) cancel_steps(self, msg.conversation.id) else: plugin.steps(msg, step['step']) else: for plugin in self.plugins: # Always do this action for every message. # if hasattr(plugin, 'always'): plugin.always(msg) # If no query show help # if msg.type == 'inline_query' and not ignore_message: if msg.content == '': msg.content = 'help' if hasattr(plugin, 'commands') and not ignore_message: # Check if any command of a plugin matches. # for command in plugin.commands: if 'parameters' not in command: command['parameters'] = None if 'command' in command: if self.check_trigger(command['command'], command['parameters'], msg, plugin): break if 'keep_default' in command and command[ 'keep_default']: if self.check_trigger( command['command'], command['parameters'], msg, plugin, False, True): break if 'friendly' in command and not has_tag( self, msg.sender.id, 'noreplies' ) and not has_tag( self, msg.conversation.id, 'noreplies' ) and msg.conversation.id != self.config.alerts_conversation_id and msg.conversation.id != self.config.admin_conversation_id: if self.check_trigger(command['friendly'], command['parameters'], msg, plugin, True): break if 'shortcut' in command: if self.check_trigger(command['shortcut'], command['parameters'], msg, plugin): break if 'keep_default' in command and command[ 'keep_default']: if self.check_trigger( command['shortcut'], command['parameters'], msg, plugin, False, True): break except KeyboardInterrupt: pass except Exception as e: catch_exception(e, self)
def steps(self, m, step): gid = str(m.conversation.id) if step == -1: self.bot.send_message( m, self.bot.trans.plugins.administration.strings.cancel % m.conversation.title, extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id) if step == 0: self.bot.send_message( m, self.bot.trans.plugins.administration.strings.done % m.conversation.title, extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id) elif step == 1: if self.bot.trans.plugins.administration.strings.yes.lower( ) in m.content.lower(): set_step(self.bot, m.conversation.id, get_plugin_name(self), 2) if not m.content.startswith( '/cancel') and not m.content.startswith('/done'): self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_link % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) else: cancel_steps(self.bot, m.conversation.id) self.bot.send_message(m, self.bot.trans.errors.unknown, extra={'format': 'HTML'}) elif step == 2: set_step(self.bot, m.conversation.id, get_plugin_name(self), 3) if not m.content.startswith( '/cancel') and not m.content.startswith('/done'): self.bot.administration[gid].link = m.content set_data('administration/%s/%s/link' % (self.bot.name, gid), self.bot.administration[gid].link) self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_alias % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 3: set_step(self.bot, m.conversation.id, get_plugin_name(self), 4) if not m.content.startswith( '/cancel') and not m.content.startswith('/done'): self.bot.administration[gid].alias = m.content.lower() set_data('administration/%s/%s/alias' % (self.bot.name, gid), self.bot.administration[gid].alias) self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_rules % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 4: set_step(self.bot, m.conversation.id, get_plugin_name(self), 5) if not m.content.startswith( '/cancel') and not m.content.startswith('/done'): self.bot.administration[gid].rules = m.content.split('\n') set_data('administration/%s/%s/rules' % (self.bot.name, gid), self.bot.administration[gid].rules) self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_motd % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 5: set_step(self.bot, m.conversation.id, get_plugin_name(self), 6) if not m.content.startswith( '/cancel') and not m.content.startswith('/done'): self.bot.administration[gid].motd = m.content set_data('administration/%s/%s/motd' % (self.bot.name, gid), self.bot.administration[gid].motd) self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_public % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 6: set_step(self.bot, m.conversation.id, get_plugin_name(self), -1) if not m.content.startswith( '/cancel') and not m.content.startswith('/done'): if self.bot.trans.plugins.administration.strings.yes.lower( ) in m.content.lower(): self.bot.administration[gid].public = True else: self.bot.administration[gid].public = False set_data('administration/%s/%s/public' % (self.bot.name, gid), self.bot.administration[gid].public)
def steps(self, m, step): gid = str(m.conversation.id) if step == -1: self.bot.send_message( m, self.bot.trans.plugins.administration.strings.cancel % m.conversation.title, extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id) if step == 0: self.bot.send_message( m, self.bot.trans.plugins.administration.strings.done % m.conversation.title, extra={'format': 'HTML'}) cancel_steps(self.bot, m.conversation.id) elif step == 1: if self.bot.trans.plugins.administration.strings.yes.lower( ) in m.content.lower(): set_step(self.bot, m.conversation.id, get_plugin_name(self), 2) if not m.content.startswith( '/next') and not m.content.startswith('/done'): self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_link % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) else: cancel_steps(self.bot, m.conversation.id) self.bot.send_message(m, self.bot.trans.errors.unknown, extra={'format': 'HTML'}) elif step == 2: set_step(self.bot, m.conversation.id, get_plugin_name(self), 3) if not m.content.startswith('/next') and not m.content.startswith( '/done'): self.administration[gid]['link'] = m.content self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_alias % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 3: set_step(self.bot, m.conversation.id, get_plugin_name(self), 4) if not m.content.startswith('/next') and not m.content.startswith( '/done'): self.administration[gid]['alias'] = m.content.lower() self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_rules % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 4: set_step(self.bot, m.conversation.id, get_plugin_name(self), 5) if not m.content.startswith('/next') and not m.content.startswith( '/done'): self.administration[gid]['rules'] = m.content.split('\n') self.bot.send_message( m, self.bot.trans.plugins.administration.strings.ask_motd % m.conversation.title, extra={ 'format': 'HTML', 'force_reply': True }) elif step == 5: set_step(self.bot, m.conversation.id, get_plugin_name(self), -1) if not m.content.startswith('/next') and not m.content.startswith( '/done'): self.administration[gid]['motd'] = m.content
def on_message_receive(self, msg): try: if msg.content == None or (msg.type != 'inline_query' and msg.date < time() - 60): return if msg.sender.id != self.config['owner'] and ( has_tag(self, msg.conversation.id, 'muted') or has_tag(self, msg.sender.id, 'muted')): return step = get_step(self, msg.conversation.id) if step: for plugin in self.plugins: if get_plugin_name(plugin) == step.plugin and hasattr( plugin, 'steps'): if msg.content.startswith('/cancel'): plugin.steps(msg, -1) cancel_steps(self, msg.conversation.id) if msg.content.startswith('/done'): plugin.steps(msg, 0) cancel_steps(self, msg.conversation.id) else: plugin.steps(msg, step['step']) else: for plugin in self.plugins: # Always do this action for every message. # if hasattr(plugin, 'always'): plugin.always(msg) # If no query show help # if msg.type == 'inline_query': if msg.content == '': msg.content = 'help' # Check if any command of a plugin matches. # for command in plugin.commands: if 'parameters' not in command: command['parameters'] = None if 'command' in command: if self.check_trigger(command['command'], command['parameters'], msg, plugin): break if 'friendly' in command: if self.check_trigger(command['friendly'], command['parameters'], msg, plugin, True): break if 'shortcut' in command: if self.check_trigger(command['shortcut'], command['parameters'], msg, plugin): break except KeyboardInterrupt: pass except Exception as e: catch_exception(e, self)