module Dialog::Metamess

Constants

ALL_CAPS

Public Class Methods

chatmemberCommon(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 45
def chatmemberCommon(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},               
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => {v1: :title},
    :fFieldsOpt   => {v1: :username},                                      
  }) 
end
chatmemberInCommon(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 54
def chatmemberInCommon(args)
  chatmemberCommon(args)   
  content_messageDefaults(args)      
  content_messageDefaultsGet(args)        
  content_userDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:new_chat_members][0]'},                
    :to           => {t1: '[:fqndata][:g][:user]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],
  })        
end
chatmemberOutCommon(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 92
def chatmemberOutCommon(args)
  chatmemberCommon(args)   
  content_messageDefaults(args)      
  content_messageDefaultsGet(args)        
  content_userDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:left_chat_member]'},                
    :to           => {t1: '[:fqndata][:g][:user]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],
  })         
end
collect(args,fqnrun) click to toggle source
# File lib/metamess/_run.rb, line 131
      def collect(args,fqnrun)
        until fqnrun.nil?
          fqn = args[:mmsg][:fqn]
#           Dialog.logger.debug "RUN Metamess - collect: #{fqnrun}"
          
          if fqnrun.key?(:g) && !fqnrun.key?(:f) && !fqnrun.key?(:o) && !fqnrun.key?(:c)
            run = "#{fqn[:c].to_s.capitalize}#{fqn[:o].to_s.capitalize}#{fqn[:f].to_s.capitalize}#{fqnrun[:g].to_s.capitalize}" 
          elsif fqnrun.key?(:f) && !fqnrun.key?(:o) && !fqnrun.key?(:c)
            run = "#{fqn[:c].to_s.capitalize}#{fqn[:o].to_s.capitalize}#{fqnrun[:f].to_s.capitalize}" 
          elsif fqnrun.key?(:o) && !fqnrun.key?(:c)
            run = "#{fqn[:c].to_s.capitalize}#{fqnrun[:o].to_s.capitalize}"
          elsif fqnrun.key?(:c)
            run = "#{fqnrun[:c].to_s.capitalize}"          
          else
            Dialog.logger.error "LOST MESSAGE!! "          
            raise 'LostMessage'
          end     
        
          run = "collect_#{run}"
#           Dialog.logger.debug "RUN Metamess - begin: #{run}"
          Dialog.clear(args)
          args[:mmsg][:fqnrun] = fqnrun
          send(run.to_sym, args)
          fqnrun = args[:mmsg][:fqnrun]
          Dialog.clear(args)
#           Dialog.logger.debug "RUN Metamess - end: #{run}"
        end  
      end
collect_DialogEventNotifyMigrateChannel(args) click to toggle source
# File lib/metamess/event/notify_o-create_f.rb, line 32
def collect_DialogEventNotifyMigrateChannel(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_DialogEventNotifyMigrateGroup(args) click to toggle source
# File lib/metamess/event/notify_o-create_f.rb, line 24
def collect_DialogEventNotifyMigrateGroup(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_DialogEventNotifyMigrateMain(args) click to toggle source
# File lib/metamess/event/notify_o-migrate_f.rb, line 24
def collect_DialogEventNotifyMigrateMain(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_DialogEventNotifyPinnedMain(args) click to toggle source
# File lib/metamess/event/notify_o-pinned_f.rb, line 24
def collect_DialogEventNotifyPinnedMain(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_Event(args) click to toggle source
# File lib/metamess/event_c.rb, line 16
def collect_Event(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_EventContent(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 16
def collect_EventContent(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### Message
  content_message(args)
  ### User
  content_user(args) unless args[:rmsg][:chat][:type] == 'channel'
  ### Chat
  content_chat(args) 
  ### Chat - private
  content_chat_private(args) if args[:rmsg][:chat][:type] == 'private'    
  ### Chat - group
  content_chat_adv(args) unless args[:rmsg][:chat][:type] == 'private'
  ### Channel
  content_channel(args) if args[:rmsg][:chat][:type] == 'channel' 
  
  ### Reply
  content_reply(args)   unless args[:rmsg][:reply_to_message].nil?
  ### Forward
  content_forward(args) unless args[:rmsg][:forward_date].nil?
  ### Edit
  content_edit(args)    unless args[:rmsg][:edit_date].nil?
  
  getChatContext(args)
  content_getFQN(args)
  
  ### EOF BODY
  return final(args)
end
collect_EventContentCommand(args) click to toggle source
# File lib/metamess/content/content_o-command_f.rb, line 16
def collect_EventContentCommand(args)
  metaStep(args, __method__.to_s)
  ### BODY
  commandType(args)      
  ### EOF BODY
  return final(args)
end
collect_EventContentCommandDialog(args) click to toggle source
# File lib/metamess/content/content_o-command_f.rb, line 82
def collect_EventContentCommandDialog(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_EventContentCommandTelegram(args) click to toggle source
# File lib/metamess/content/content_o-command_f.rb, line 90
def collect_EventContentCommandTelegram(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_EventContentContact(args) click to toggle source
# File lib/metamess/content/content_o-contact_f.rb, line 16
def collect_EventContentContact(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Contact::Genus.Main
  
  ### EOF BODY
  return final(args)
end
collect_EventContentContactMain(args) click to toggle source
# File lib/metamess/content/content_o-contact_f.rb, line 25
def collect_EventContentContactMain(args)
  metaStep(args, __method__.to_s)
  ### BODY
  
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:contact]'},                  
    :to           => {t1: '[:fqndata][:f][:contact]'},
    :fFields      => {v1: :phone_number, v2: :first_name, v3: :last_name, v4: :user_id},
  }) 
  
  ### EOF BODY
  return final(args)
end
collect_EventContentMedia(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 16
def collect_EventContentMedia(args)
  metaStep(args, __method__.to_s)
  ### BODY
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:f]'},
    :fFieldsOpt   => {v1: :caption},
  })        
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaAudio(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 89
def collect_EventContentMediaAudio(args)
  metaStep(args, __method__.to_s)
  ###
  from  = {f1: '[:audio]'}        
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from] = from              
  metamessGen(args,eval2mmsg) 
  eval2mmsg = defaults_mediaWithDuration(eval2mmsg)
  eval2mmsg[:from] = from      
  metamessGen(args,eval2mmsg)        
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaDocument(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 60
def collect_EventContentMediaDocument(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:document]'}
  metamessGen(args,eval2mmsg) 
  
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:document]'},
    :to           => {t1: '[:fqndata][:f][:file]'},
    :fFields      => {v1: :file_name},
    :fFieldsOpt   => {v1: :name},
  })
  
  args[:mmsg][:fqndata][:f][:file][:path] = Dialog::Wrappers.apiGetFilePath(args[:mmsg][:fqndata][:f][:file][:id])      
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaPhoto(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 47
def collect_EventContentMediaPhoto(args)
  metaStep(args, __method__.to_s)
  ### BODY
  #args[:rmsg].photo[-1].file_size ## TODO - for array
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:photo][-1]'}
  metamessGen(args,eval2mmsg)  
  
  args[:mmsg][:fqndata][:f][:file][:path] = Dialog::Wrappers.apiGetFilePath(args[:mmsg][:fqndata][:f][:file][:id])      
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaSticker(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 137
def collect_EventContentMediaSticker(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:sticker]'}
  metamessGen(args,eval2mmsg)       
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaVideo(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 103
def collect_EventContentMediaVideo(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:video]'}
  metamessGen(args,eval2mmsg)       
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaVideo_note(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 113
def collect_EventContentMediaVideo_note(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:video_note]'}
  metamessGen(args,eval2mmsg) 
  ### EOF BODY
  return final(args)
end
collect_EventContentMediaVoice(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 123
def collect_EventContentMediaVoice(args)
  metaStep(args, __method__.to_s)
  ### BODY
  from  = {f1: '[:voice]'}        
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from] = from
  metamessGen(args,eval2mmsg) 
  eval2mmsg = defaults_mediaWithDuration(eval2mmsg)
  eval2mmsg[:from] = from      
  metamessGen(args,eval2mmsg)
  ### EOF BODY
  return final(args)
end
collect_EventContentMediatVoice(args) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 79
def collect_EventContentMediatVoice(args)
  metaStep(args, __method__.to_s)
  ### BODY
  eval2mmsg = defaults_media(eval2mmsg)
  eval2mmsg[:from]  = {f1: '[:tvoice]'}
  metamessGen(args,eval2mmsg) 
  ### EOF BODY
  return final(args)
end
collect_EventContentSimple(args) click to toggle source
# File lib/metamess/content/content_o-simple_f.rb, line 16
def collect_EventContentSimple(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Simple::Genus.Text
  
  ### EOF BODY
  return final(args)
end
collect_EventContentSimpleText(args) click to toggle source
# File lib/metamess/content/content_o-simple_f.rb, line 25
def collect_EventContentSimpleText(args)
  metaStep(args, __method__.to_s)
  ### BODY
  
  ### EOF BODY
  return final(args)
end
collect_EventNotify(args) click to toggle source
# File lib/metamess/event/notify_o.rb, line 16
def collect_EventNotify(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args) unless args[:rmsg][:chat][:type] == 'channel'
  ### Chat
  content_chat(args)      
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChatmember(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 16
def collect_EventNotifyChatmember(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:rmsg][:new_chat_members].each do |member|
    args[:mmsg][:fqndata][:g] ||= {}
    if member[:id] == args[:rmsg][:from][:id] && member[:is_bot] == false
      if args[:rmsg][:chat][:username].nil?
        args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.In_link
      else
        args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.In_open            
      end
    else
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.Invite
    end

  end 
  
  unless args[:rmsg][:left_chat_member].nil?
    args[:mmsg][:fqndata][:g] = {}
    if args[:rmsg][:left_chat_member][:id] == args[:rmsg][:from][:id] && args[:rmsg][:left_chat_member][:is_bot] == false
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.Leave
    else            
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Notify::Family::ChatMember::Genus.Ban
    end
  end        
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChatmemberBan(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 114
def collect_EventNotifyChatmemberBan(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberOutCommon(args)
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChatmemberIn_open(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 76
def collect_EventNotifyChatmemberIn_open(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberInCommon(args)
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChatmemberInvite(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 84
def collect_EventNotifyChatmemberInvite(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberInCommon(args)
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChatmemberLeave(args) click to toggle source
# File lib/metamess/event/notify_o-chatmember_f.rb, line 106
def collect_EventNotifyChatmemberLeave(args)
  metaStep(args, __method__.to_s)
  ### BODY
  chatmemberOutCommon(args)
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChattitle(args) click to toggle source
# File lib/metamess/event/notify_o-chattitle_f.rb, line 16
def collect_EventNotifyChattitle(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = 'new'
  ### EOF BODY
  return final(args)
end
collect_EventNotifyChattitleNew(args) click to toggle source
# File lib/metamess/event/notify_o-chattitle_f.rb, line 24
def collect_EventNotifyChattitleNew(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_EventNotifyCreate(args) click to toggle source
# File lib/metamess/event/notify_o-create_f.rb, line 16
def collect_EventNotifyCreate(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = Dialog::Naming::Class::Default::Order::Default::Genus.Main
  ### EOF BODY
  return final(args)
end
collect_EventNotifyMigrate(args) click to toggle source
# File lib/metamess/event/notify_o-migrate_f.rb, line 16
def collect_EventNotifyMigrate(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = Dialog::Naming::Class::Default::Order::Default::Genus.Main
  ### EOF BODY
  return final(args)
end
collect_EventNotifyPinned(args) click to toggle source
# File lib/metamess/event/notify_o-pinned_f.rb, line 16
def collect_EventNotifyPinned(args)
  metaStep(args, __method__.to_s)
  ### BODY
  args[:mmsg][:fqn][:g] = Dialog::Naming::Class::Default::Order::Default::Genus.Main
  ### EOF BODY
  return final(args)
end
collect_EventService(args) click to toggle source
# File lib/metamess/service/service_o.rb, line 16
def collect_EventService(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_EventServiceCallbackQuery(args) click to toggle source
# File lib/metamess/service/service_o-callback_f.rb, line 16
def collect_EventServiceCallbackQuery(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  content_message(args) if args[:rmsg].has_key?(:message)
  #location # TODO
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:g][:callback]'},
    :fFields      => {v1: :id, v2: :chat_instance},
    :fFieldsOpt   => {v1: :inline_message_id, v2: :data},
  })
  ### EOF BODY
  return final(args)
end
collect_EventServiceInline(args) click to toggle source
# File lib/metamess/service/service_o-inline_f.rb, line 16
def collect_EventServiceInline(args)
  metaStep(args, __method__.to_s)
  ### BODY

  ### EOF BODY
  return final(args)
end
collect_EventServiceInlineCresult(args) click to toggle source
# File lib/metamess/service/service_o-inline_f.rb, line 40
def collect_EventServiceInlineCresult(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:g][:inline]'},
    :fFields      => {v1: :result_id, v2: :query},
    :tFields      => {v1: :id, v2: :query},                                      
    :fFieldsOpt   => {v1: :inline_message_id},
  })        
  ### EOF BODY
  return final(args)
end
collect_EventServiceInlineQuery(args) click to toggle source
# File lib/metamess/service/service_o-inline_f.rb, line 25
def collect_EventServiceInlineQuery(args)
  metaStep(args, __method__.to_s)
  ### BODY
  content_user(args)
  #location # TODO
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:g][:inline]'},
    :fFields      => {v1: :id, v2: :query},
    :fFieldsOpt   => {v1: :offset},                                      
  })        
  ### EOF BODY
  return final(args)
end
commandType(args) click to toggle source
# File lib/metamess/content/content_o-command_f.rb, line 25
def commandType(args)
    case args[:mmsg][:fqndata][:o][:msg][:textStartWith]
    when /^_[а-яА-ЯёЁa-zA-Z0-9]..*.:.*[а-яА-ЯёЁa-zA-Z0-9]+$/
      delimiter = ":"
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Dialog
    when /^_[а-яА-ЯёЁa-zA-Z0-9]*[^:]*\s*[а-яА-ЯёЁa-zA-Z0-9]+$/
      delimiter = "\s"
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Dialog
    when /^\/[а-яА-ЯёЁa-zA-Z0-9]..*.:.*[а-яА-ЯёЁa-zA-Z0-9]+$/
      delimiter = ":"
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Telegram
    when /^\/[а-яА-ЯёЁa-zA-Z0-9]*[^:]*\s*[а-яА-ЯёЁa-zA-Z0-9]+$/
      delimiter = "\s"   
      args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Command::Genus.Telegram
    else
      delimiter = false
    end
    Dialog.logger.debug("######  delimiter - #{delimiter} ")      
    
    if ! delimiter == false
      bot_fullcommand = args[:mmsg][:fqndata][:o][:msg][:textStartWith].split(delimiter)
      bot_command = bot_fullcommand[0].strip[1..-1].downcase
      
      if /.@.*/.match?(bot_command)
        if /.@#{args[:globals][:botUsername].downcase}.*/.match?(bot_command)
          bot_command = bot_command.split('@')[0]
        else
          Dialog.logger.error("######  COMMAND FOR OTHER BOT! ")
          raise
        end
      end
      
      if bot_fullcommand[1].nil?
        bot_subcommand = '_main' 
      else
        bot_fullcommand.shift
        bot_fullcommand.each do |v| 
          if /^#.*|^@.*/.match?(v)
            next
          else
            bot_subcommand = "#{bot_subcommand}_#{v.downcase}"
          end
        end
        bot_subcommand = '_main' if  bot_subcommand == ''          
      end
      
    else
      bot_command = args[:mmsg][:fqndata][:o][:msg][:textStartWith].strip[1..-1].downcase 
      bot_subcommand = '_main'
    end
    
    args[:mmsg][:fqndata][:f][:bot_command] = bot_command
    args[:mmsg][:fqndata][:f][:bot_subcommand] = bot_subcommand
  end
content_channel(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 176
def content_channel(args)      
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:o][:from]'},
    :fFieldsOpt   => {v1: :author_signature},                                      
  })           
end
content_chat(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 147
def content_chat(args)
  content_chatDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},               
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => args[:x][:metamess][:chatDefaults_fFields],
  })         
end
content_chatDefaults(args) click to toggle source

Chat

# File lib/metamess/content/content_o.rb, line 143
def content_chatDefaults(args)
  args[:x][:metamess][:chatDefaults_fFields]  = {v1: :id, v2: :type}
end
content_chat_adv(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 166
def content_chat_adv(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},               
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => {v1: :title},
    :fFieldsOpt   => {v1: :pinned_message, v2: :invite_link, v3: :username},     
    :tFieldsOpt   => {v1: :pinned_message, v2: :invitelink_name, v3: :chatlink_name},                                                                            
  })         
end
content_chat_private(args) click to toggle source

Chat - private

# File lib/metamess/content/content_o.rb, line 157
def content_chat_private(args)              
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:chat]'},                
    :to           => {t1: '[:fqndata][:o][:chat]'},
    :fFields      => {v1: :first_name, v2: :last_name, v3: :username},
  })             
end
content_edit(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 232
def content_edit(args)
  args[:mmsg][:actionsd][:edit] = {}          
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Edit
  args[:mmsg][:actions] << args[:mmsg][:fqndata][:o][:msg][:msgtype]  

  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:actionsd][:edit]'},
    :fFields      => {v1: :edit_date},
    :tFields      => {v1: :date},
  })
end
content_forward(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 201
def content_forward(args)
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Forward
  args[:mmsg][:actions] << args[:mmsg][:fqndata][:o][:msg][:msgtype]
  args[:mmsg][:actionsd][:forward] = {}
  #forward_signature
  
  content_userDefaults(args)      
  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:forward_from]'},                                      
    :to           => {t1: '[:actionsd]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],                                      
  })        

 
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:actionsd][:forward][:msg]'},
    :fFields      => {v1: :forward_date},
    :tFields      => {v1: :date},                                      
    :fFieldsOpt   => {v1: :forward_from_message_id},
    :tFieldsOpt   => {v1: :id},                                      
  })        

  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:actionsd][:forward][:chat]'},
    :fFieldsOpt      => {v1: :forward_from_chat},
    :tFieldsOpt      => {v1: :id},
  })        
        
end
content_getFQN(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 60
def content_getFQN(args)    
  content_getFQNMedia(args)
  
  if args[:mmsg][:fqnrun][:f].nil?
    if args[:rmsg].respond_to?(:contact)   && !args[:rmsg].contact.nil?
            args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Contact
    elsif args[:rmsg].respond_to?(:location)  && !args[:rmsg].location.nil?
            args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Location
    elsif args[:rmsg].respond_to?(:invoice)   && !args[:rmsg].invoice.nil?
            args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Invoice
    end
  end
    
  if args[:mmsg][:fqnrun][:f].nil?
    if args[:mmsg][:fqndata][:o][:msg].key?(:textStartWith)
      case args[:mmsg][:fqndata][:o][:msg][:textStartWith]
      when ->(s) { (s.size < 70  and ((s[0] == '_') or (s[0] == '/'))) }
        args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Command
      else
        args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Simple
      end
    else
      args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Notext
    end
  end
  
end
content_getFQNMedia(args) click to toggle source

Content methods

# File lib/metamess/content/content_o.rb, line 48
def content_getFQNMedia(args)
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Photo if args[:rmsg].respond_to?(:photo)           && !args[:rmsg].photo.empty?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Document if args[:rmsg].respond_to?(:document)     && !args[:rmsg].document.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Voice if args[:rmsg].respond_to?(:voice)           && !args[:rmsg].voice.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Audio if args[:rmsg].respond_to?(:audio)           && !args[:rmsg].audio.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Video if args[:rmsg].respond_to?(:video)           && !args[:rmsg].video.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Videonote if args[:rmsg].respond_to?(:video_note) && !args[:rmsg].video_note.nil?
  args[:mmsg][:fqnrun][:g] = Dialog::Naming::Class::Event::Order::Content::Family::Media::Genus.Sticker if args[:rmsg].respond_to?(:sticker)       && !args[:rmsg].sticker.nil?   
  
  args[:mmsg][:fqnrun][:f] = Dialog::Naming::Class::Event::Order::Content::Family.Media unless args[:mmsg][:fqnrun][:g].nil?
end
content_message(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 116
def content_message(args)
  content_messageDefaults(args)      
  content_messageDefaultsGet(args)
  
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Original
  args[:rmsg].text.nil? ? true : args[:mmsg][:fqndata][:o][:msg][:textStartWith] = args[:rmsg].text.split[0..10].join(' ')           
end
content_messageDefaults(args) click to toggle source

Message

# File lib/metamess/content/content_o.rb, line 102
def content_messageDefaults(args)
  args[:x][:metamess][:messageDefaults_fFields]  = {v1: :message_id, v2: :date}
  args[:x][:metamess][:messageDefaults_tFields]  = {v1: :id, v2: :date}
end
content_messageDefaultsGet(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 107
def content_messageDefaultsGet(args)
  metamessGen(args,eval2mmsg = { 
    :to           => {t1: '[:fqndata][:o][:msg]'},
    :fFields      => args[:x][:metamess][:messageDefaults_fFields],
    :tFields      => args[:x][:metamess][:messageDefaults_tFields],
    :fFieldsOpt   => {v1: :text}                               
  })
end
content_reply(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 184
def content_reply(args)
  args[:mmsg][:fqndata][:o][:msg][:msgtype] =  Dialog::Naming::Class::Event::Order::Content::Type.Reply
  args[:mmsg][:actions] << args[:mmsg][:fqndata][:o][:msg][:msgtype]     
  
  #callback
  args[:rmsgMain] = Hash.new.merge(args[:rmsg])
  args[:rmsg] = args[:rmsg][:reply_to_message]
  args[:mmsgMain] = Hash.new.merge(args[:mmsg])
  args[:mmsg] = {}; init(args); args[:mmsgCallback] = Dialog::Metamess.collect_EventContent(args)
  args[:mmsg] = args[:mmsgMain]; args.delete(:mmsgMain)
  args[:rmsg] = args[:rmsgMain]; args.delete(:rmsgMain)
  args[:mmsg][:actionsd][:reply] = args[:mmsgCallback]; args.delete(:mmsgCallback)
  
end
content_user(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 131
def content_user(args)
  content_userDefaults(args)      

  metamessGen(args,eval2mmsg = { 
    :from         => {f1: '[:from]'},                
    :to           => {t1: '[:fqndata][:o][:from]'},
    :fFields      => args[:x][:metamess][:userDefaults_fFields],
    :fFieldsOpt   => args[:x][:metamess][:userDefaults_fFieldsOpt],
  })        
end
content_userDefaults(args) click to toggle source

User

# File lib/metamess/content/content_o.rb, line 126
def content_userDefaults(args)
  args[:x][:metamess][:userDefaults_fFields]    = {v1: :id, v2: :first_name, v3: :username, v4: :is_bot}
  args[:x][:metamess][:userDefaults_fFieldsOpt] = {v1: :last_name, v2: :language_code}
end
defaults_media(eval2mmsg) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 28
def defaults_media(eval2mmsg)
  eval2mmsg = { 
    :to           => {t1: '[:fqndata][:f][:file]'},
    :fFields      => {v1: :file_id, v2: :file_size},
    :tFields      => {v1: :id, v2: :size},
    :fFieldsOpt   => {v1: :mime_type},
  }
  return eval2mmsg
end
defaults_mediaWithDuration(eval2mmsg) click to toggle source
# File lib/metamess/content/content_o-media_f.rb, line 38
def defaults_mediaWithDuration(eval2mmsg)
  eval2mmsg = { 
    :to           => {t1: '[:fqndata][:f][:file]'},
    :fFieldsOpt   => {v1: :duration},
  }
  return eval2mmsg
end
eval2mmsg_simplemap(eval2mmsg) click to toggle source
# File lib/metamess/func.rb, line 114
    def eval2mmsg_simplemap(eval2mmsg) # TODO doubled functionality
      map = {}
      if eval2mmsg.key?(:fFields)
        eval2mmsg[:tFields] = eval2mmsg[:fFields] unless eval2mmsg.key?(:tFields)          
        if eval2mmsg[:fFields].size == eval2mmsg[:tFields].size 
          map[:base] = {}
          i = 1
          while i <= eval2mmsg[:tFields].size  do
            map[:base][:"m#{i}".to_sym] = {from: 'f1', to: 't1'}
            i+=1
          end
        else
          Dialog.logger.error "EVAL map not equal"        
          raise
        end    
      end
      
      if eval2mmsg.key?(:fFieldsOpt)
        eval2mmsg[:tFieldsOpt] = eval2mmsg[:fFieldsOpt] unless eval2mmsg.has_key?(:tFieldsOpt)
        if eval2mmsg[:fFieldsOpt].size == eval2mmsg[:tFieldsOpt].size 
          
          map[:opt] = {}
          i = 1
          while i <= eval2mmsg[:tFieldsOpt].size  do
            map[:opt][:"m#{i}".to_sym] = {from: 'f1', to: 't1'}
            i+=1
          end
        else
          Dialog.logger.error "EVAL map not equal"        
          raise
        end
      end  
      
#       Dialog.logger.debug "#{map}"
      return map
    end
final(args) click to toggle source
# File lib/metamess/func.rb, line 163
def final(args)      
    if args[:mmsg][:fqn].key?(:g)
      args[:mmsg].delete(:fqnrun)
    elsif args[:mmsg][:fqn].key?(:f)
      args[:mmsg][:fqnrun].key?(:g) ? args[:mmsg][:fqnrun].delete(:f) : nofinal(args, 'f->g')
    elsif args[:mmsg][:fqn].key?(:o)
      args[:mmsg][:fqnrun].key?(:f) ? args[:mmsg][:fqnrun].delete(:o) : nofinal(args, 'o->f')          
    elsif args[:mmsg][:fqn].key?(:c)
      args[:mmsg][:fqnrun].key?(:o) ? args[:mmsg][:fqnrun].delete(:c) : nofinal(args, 'c->o')          
    else          
      Dialog.logger.error "### FINAL GOES WRONG"
    end
    
  return args[:mmsg]
end
firstpoint(args) click to toggle source
# File lib/metamess/_run.rb, line 39
      def firstpoint(args)
        Dialog.clear(args)
  #       args[:mmsg] = Concurrent::Hash.new
        init(args)
        fqnrun = {}
        
        fqnrun[:c] =  Dialog::Naming::Class.Event
        case args[:rmsg].class.to_s
        when 'Telegram::Bot::Types::InlineQuery'
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Service
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Service::Family.Inline
          fqnrun[:g] = Dialog::Naming::Class::Event::Order::Service::Family::Inline::Genus.Query
          
        when 'Telegram::Bot::Types::ChosenInlineResult'
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Service
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Service::Family.Inline
          fqnrun[:g] = Dialog::Naming::Class::Event::Order::Service::Family::Inline::Genus.Cresult
          
        when 'Telegram::Bot::Types::CallbackQuery'
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Service
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Service::Family.Callback
          fqnrun[:g] = Dialog::Naming::Class::Event::Order::Service::Family::Callback::Genus.Query
        when 'Telegram::Bot::Types::Message'
          message_identificate(args,fqnrun)
        end
        collect(args,fqnrun)
        Dialog.logger.info("## RESULT of Metamess: #{args[:mmsg]}\n")  
        
        ##needs refactor to lambda
        args[:rmsg].to_h.each do |k1, v1|
          unless ['NilClass', 'Array', 'Integer', 'String'].include?(v1.class.to_s)
            v1.to_h.each do |k2, v2|
              args[:rmsgcheck][k1.to_sym] ||= {}    
              rmsgcheckForm(args, k1, v1, k2, v2)
            end
          else
            rmsgcheckForm(args, k1, v1)
          end
        end
        ##
#         Dialog.logger.debug("################## rmsgcheck - #{args[:rmsgcheck]}")
#         Dialog.logger.debug("################## metacheck - #{args[:metacheck]}")
        diff = args[:rmsgcheck].diff(args[:metacheck])
        unless diff == {}
          Dialog.logger.error("@@@@ !!!! Metacheck diff: #{diff}")
          Dialog.logger.info "RAW MSG:\n#{args[:rmsg].to_hash}\n"                        
        end
        args[:metacheck] = {}
        args[:rmsg] = {}
        args[:perf][:metamess] = Time.now                                
        Dialog::Canvas.run(args)
        args[:perf][:canvas] = Time.now                                
      end
getChatContext(args) click to toggle source
# File lib/metamess/content/content_o.rb, line 88
def getChatContext(args)
  case args[:mmsg][:fqndata][:o][:chat][:type]
  when 'private'
    context = Naming::ChatContext.Private
  when 'group'    
    leaveGroup(args)          
  when 'supergroup'
    context = Dialog::Storage::Redis.pullCached({ :type => 'chat', :key => 'context'}, args)
  end
  
  context.nil? ? nodata(args: args, from: 'context') : args[:mmsg][:fqndata][:o][:chat][:context] = context             
end
getStep(method) click to toggle source
# File lib/metamess/func.rb, line 19
def getStep(method)
  step = {}
  case method.count(ALL_CAPS)
  when 1
    step[:prev] = false
    step[:curr] = :c
    step[:next] = :o
  when 2
    step[:prev] = :c
    step[:curr] = :o
    step[:next] = :f
  when 3
    step[:prev] = :o
    step[:curr] = :f
    step[:next] = :g
  when 4
    step[:prev] = :g
    step[:curr] = :g
    step[:next] = true         
  end
  return step
end
init(args) click to toggle source
# File lib/metamess/_run.rb, line 18
def init(args)
  args[:mmsg] = {actions: [], actionsd: {}, fqn: {}, fqndata: {}, fqnrun: {}}
  nestedHash = lambda {|h,k| h[k] = Hash.new(&nestedHash)}
  args[:rmsgcheck] = Hash.new  
  args[:metacheck] = Hash.new(&nestedHash)        
end
leaveGroup(args) click to toggle source
# File lib/metamess/func.rb, line 153
def leaveGroup(args)
  args[:api][:op] = 'Message'          
  args[:smsg] = {}           
  args[:smsg][:chat_id] = args[:rmsg].chat.id
  args[:smsg][:text] = I18n.t('_action_group2supergroup')
  Dialog::BotApi.apiActionSend(args) 
  args[:api][:op] = 'leaveChat'                
  Dialog::BotApi.apiAction(args) 
end
message_identificate(args,fqnrun) click to toggle source
# File lib/metamess/_run.rb, line 94
def message_identificate(args,fqnrun) 
  rmsg= args[:rmsg]
  if    rmsg.respond_to?(:new_chat_members)  && !rmsg.new_chat_members.empty? ||
        rmsg.respond_to?(:left_chat_member)  && !rmsg.left_chat_member.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.ChatMember
  elsif rmsg.respond_to?(:new_chat_photo)    && !rmsg.new_chat_photo.empty? ||
        rmsg.respond_to?(:delete_chat_photo) && !rmsg.delete_chat_photo.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.ChatPhoto
  elsif rmsg.respond_to?(:new_chat_title)    && !rmsg.new_chat_title.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.ChatTitle              
  elsif rmsg.respond_to?(:group_chat_created)&& !rmsg.group_chat_created.nil? ||
        rmsg.respond_to?(:supergroup_chat_created)&& !rmsg.supergroup_chat_created.nil?
        rmsg.respond_to?(:channel_chat_created)   && !rmsg.channel_chat_created.nil?        
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Create
  elsif rmsg.respond_to?(:migrate_to_chat_id)&& !rmsg.migrate_to_chat_id.nil? ||
        rmsg.respond_to?(:migrate_from_chat_id)   && !rmsg.migrate_from_chat_id.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Migrate
  elsif rmsg.respond_to?(:pinned_message)    && !rmsg.pinned_message.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Pinned
  elsif rmsg.respond_to?(:connected_website)    && !rmsg.connected_website.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Login
  elsif rmsg.respond_to?(:passport_data)    && !rmsg.passport_data.nil?
          fqnrun[:o] = Dialog::Naming::Class::Event::Order.Notify
          fqnrun[:f] = Dialog::Naming::Class::Event::Order::Notify::Family.Passport    
  else
        fqnrun[:o] = Dialog::Naming::Class::Event::Order.Content
  end
end
metaStep(args, method) click to toggle source
# File lib/metamess/func.rb, line 185
def  metaStep(args, method)
  method = method.split('_')[1]
  step = getStep(method)
  
  args[:mmsg][:fqn][step[:curr]] = args[:mmsg][:fqnrun][step[:curr]]
  args[:mmsg][:fqndata][step[:curr]] = {}
  args[:x][:metamess][:m] = method
end
metamessGen(args,eval2mmsg) click to toggle source
# File lib/metamess/func.rb, line 48
      def metamessGen(args,eval2mmsg)
        toPrefix = 'args[:mmsg]'
        ## BUG !!!! EVAL!!! - migrate to instance_variable_set
        eval2mmsg[:to].each do |num, val|
          begin
  #           Dialog.logger.debug "### checking hash: #{val}"
            val = "#{toPrefix}#{val}"
            eval("#{val}.length")        
          rescue NoMethodError => @e        
  #           Dialog.logger.debug "### create hash: #{val}"
            eval("#{val} = {}")
          end
        end
        
        eval2mmsg[:map] = eval2mmsg_simplemap(eval2mmsg) unless eval2mmsg.has_key?(:map)
        
        eval2mmsg[:map].each do |mapType, mapTypeData|
          mapTypeData.each do |pk, pv|  pk[1..-1]
            if mapType.to_s == 'opt'
              tFields = 'tFieldsOpt'; fFields = 'fFieldsOpt'; opt = true
#               Dialog.logger.debug "### 1 type: #{mapType}, tFields: #{tFields}, res: #{eval("#{eval2mmsg["#{tFields}".to_sym]}")}"
            else
              tFields = 'tFields'; fFields = 'fFields'; opt = false   
#               Dialog.logger.debug "### 2 type: #{mapType}, tFields: #{tFields}, res: #{eval("#{eval2mmsg["#{tFields}".to_sym]}")}"
            end
            
            to = "#{toPrefix}#{eval2mmsg[:to][pv[:to].to_sym]}#{[eval2mmsg["#{tFields}".to_sym]["v#{pk[1..-1]}".to_sym]]}"
            if eval2mmsg.has_key?(:from)
              from = "#{eval2mmsg[:from][pv[:from].to_sym]}#{[eval2mmsg["#{fFields}".to_sym]["v#{pk[1..-1]}".to_sym]]}"
            else
              from = "#{[eval2mmsg["#{fFields}".to_sym]["v#{pk[1..-1]}".to_sym]]}"
            end
            
            ## refactor to lambda
            if opt == true 
              begin
                eval("args[:rmsg]#{from}.nil?") ? metacheck = false : metacheck = "args[:metacheck]#{from}" 
              rescue NoMethodError => @e    
                 metacheck = false
              end
            else
              metacheck = "args[:metacheck]#{from}" 
            end
#             Dialog.logger.catch "### opt::#{opt}, from::#{from}, metacheck::#{metacheck}"
            eval("#{metacheck} = 1") unless metacheck == false
            
            from = "args[:rmsg]#{from}"
#             Dialog.logger.debug "### Metamessage - FROM #{from};\tTO: #{to}, type: #{mapType}"
            if mapType.to_s == 'opt'
              nilFunction = true
            else
              nilFunction = "nodata(args: args,from: from)"
            end
            begin
              eval("#{from}.nil? ? #{nilFunction} : #{to} = #{from}")
            rescue NoMethodError => @e
              Dialog.logger.debug "No method #{from}"  if nilFunction == true
            rescue TypeError => @e  
              Dialog.logger.error "Problems with mapping type: #{mapType}, #{tFields}->#{fFields}, may be optional?"        
              raise     
            end
            ##
          end
        end      
      end
nodata(args: , from: ) click to toggle source
# File lib/metamess/func.rb, line 42
def nodata(args: , from: )
  args[:x][:metamess][:nodata] = "### NO DATA FROM METAMESS RUNNER: Order '#{args[:x][:metamess][:o]}', method '#{args[:x][:metamess][:m]}' from '#{from}' ###"
  Dialog.logger.error "#{args[:x][:metamess][:nodata]}"
  raise TypeError
end
nofinal(args, step) click to toggle source
# File lib/metamess/func.rb, line 179
def nofinal(args, step)
  error = "### NO next FQN step (#{step}) for : '#{args[:mmsg]}' ###"
  Dialog.logger.error "#{error}"
  raise 'LostFQN'      
end
rmsgcheckForm(args, k1, v1, k2=true, v2=true) click to toggle source
# File lib/metamess/_run.rb, line 25
      def rmsgcheckForm(args, k1, v1, k2=true, v2=true)
        vNext = true
        v2 == true ? value = v1 : value = v2
        value.kind_of?(Array) ? vNext = value.empty? : vNext = value.nil?   
       
#         Dialog.logger.debug "### k2 - #{k2}, value - #{value}, vNext - #{vNext}"
        if v2 == true
          args[:rmsgcheck][k1.to_sym] = 1 if vNext == false        
        else
          args[:rmsgcheck][k1.to_sym][k2.to_sym] = 1 if vNext == false     
        end
      end