class SimpleXChat::BasicCommandRunner
def process_next_event(max_backlog_secs)
def process_next_event(max_backlog_secs) chat_msg = @client.next_chat_message(max_backlog_secs: max_backlog_secs) if chat_msg == nil @logger.warn("Message queue is closed") return :stop end @logger.debug("Chat message: #{chat_msg}") msg_text = chat_msg[:msg_text] chat_type = chat_msg[:chat_type] issuer = chat_msg[:contact] issuer_role = chat_msg[:contact_role] sender = chat_msg[:sender] # Skip automated group messages return if issuer == nil # Verify if message is a command message_items = msg_text.split(" ") first_word = message_items[0] return if not first_word.start_with?(@prefix) # React to all messages we will process @client.api_reaction chat_msg[:chat_type], chat_msg[:sender_id], chat_msg[:msg_item_id], emoji: '🚀' # Verify if this is a registered command command = @commands[first_word] if command == nil @client.api_send_text_message chat_msg[:chat_type], chat_msg[:sender], "@#{issuer}: Unknown command" return end args = message_items[1..] # Run command @logger.debug("Validating and executing command '#{command.name}' for: #{chat_type}#{sender} [#{issuer}]: #{msg_text}") command.validate_and_execute @client, chat_msg, args end