Advertisement
Guest User

Untitled

a guest
Mar 30th, 2020
153
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 6.30 KB | None | 0 0
  1. # frozen_string_literal: true
  2.  
  3. require 'discordrb'
  4.  
  5. require_relative './index.rb'
  6. class NicknamerModule
  7.   def register_user_commands
  8.     nicknamer_commands
  9.   end
  10.  
  11.   def nicknamer_commands
  12.     @app_class.register_user_cmd(:nicknamer, %w[nicknamer nickname nick]) do |_command, args, event|
  13.       language = @language.get_json(event.server.id)['commands']
  14.       if event.author.permission? :manage_server
  15.         if args.length <= 0
  16.           help(event.user, event.channel)
  17.         elsif args[0].casecmp('prefix').zero?
  18.           prefix_command(args.drop(1), event)
  19.         elsif args[0].casecmp('suffix').zero?
  20.           suffix_commands(args.drop(1), event)
  21.         elsif args[0].casecmp('update').zero?
  22.           update_command(args.drop(1), event)
  23.         elsif args[0].casecmp('list').zero?
  24.           list_command(args.drop(1), event)
  25.         elsif args[0].casecmp('info').zero?
  26.           info_command(args.drop(1), event)
  27.         else
  28.           event.send_message language['usage']
  29.         end
  30.       else
  31.         event.send_message language['nopermission']
  32.       end
  33.     end
  34.   end
  35.  
  36.   def prefix_command(args, event)
  37.     language = @language.get_json(event.server.id)['commands']['prefix']
  38.     if args.length < 2
  39.       event.send_message language['usage']
  40.       return
  41.     end
  42.     upper = args[0].downcase
  43.     unless %w[yes no].include? upper
  44.       event.send_message language['invalid']['upper']
  45.       return
  46.     end
  47.     role = args[1]
  48.     if event.server.role(role).nil?
  49.       event.send_message language['invalid']['role']
  50.       return
  51.     end
  52.     entry = @client[:nicknamer].where(server_id: event.server.id, role: role)
  53.     if args.length == 2
  54.       unless entry.all.empty?
  55.         if upper == 'yes'
  56.           if entry.first[:normal_prefix].strip.empty?
  57.             entry.delete
  58.           else
  59.             entry.update(upper_prefix: '')
  60.           end
  61.         else
  62.           if entry.first[:upper_prefix].strip.empty?
  63.             entry.delete
  64.           else
  65.             entry.update(normal_prefix: '')
  66.           end
  67.         end
  68.       end
  69.       event.send_message language['remove'][upper]
  70.     else
  71.       if entry.all.empty?
  72.         if upper == 'yes'
  73.           @client[:nicknamer].insert(server_id: event.server.id, role: role, upper_prefix: args.drop(2).join(' '))
  74.         else
  75.           @client[:nicknamer].insert(server_id: event.server.id, role: role, normal_prefix: args.drop(2).join(' '))
  76.         end
  77.       else
  78.         if upper == 'yes'
  79.           entry.update(upper_prefix: args.drop(2).join(' '))
  80.         else
  81.           entry.update(normal_prefix: args.drop(2).join(' '))
  82.         end
  83.       end
  84.       event.send_message(language['success'][upper])
  85.     end
  86.   end
  87.  
  88.   def suffix_commands(args, event)
  89.     language = @language.get_json(event.server.id)['commands']['suffix']
  90.     if args.length < 2
  91.       event.send_message language['usage']
  92.       return
  93.     end
  94.     upper = args[0].downcase
  95.     unless %w[yes no].include? upper
  96.       event.send_message language['invalid']['upper']
  97.       return
  98.     end
  99.     role = args[1]
  100.     if event.server.role(role).nil?
  101.       event.send_message language['invalid']['role']
  102.       return
  103.     end
  104.     entry = @client[:nicknamer].where(server_id: event.server.id, role: role)
  105.     if args.length == 2
  106.       unless entry.all.empty?
  107.         if upper == 'yes'
  108.           if entry.first[:normal_suffix].strip.empty?
  109.             entry.delete
  110.           else
  111.             entry.update(upper_suffix: '')
  112.           end
  113.         else
  114.           if entry.first[:upper_suffix].strip.empty?
  115.             entry.delete
  116.           else
  117.             entry.update(normal_suffix: '')
  118.           end
  119.         end
  120.       end
  121.       event.send_message language['remove'][upper]
  122.     else
  123.       if entry.all.empty?
  124.         if upper == 'yes'
  125.           @client[:nicknamer].insert(server_id: event.server.id, role: role, upper_suffix: args.drop(2).join(' '))
  126.         else
  127.           @client[:nicknamer].insert(server_id: event.server.id, role: role, normal_suffix: args.drop(2).join(' '))
  128.         end
  129.       else
  130.         if upper == 'yes'
  131.           entry.update(upper_suffix: args.drop(2).join(' '))
  132.         else
  133.           entry.update(normal_suffix: args.drop(2).join(' '))
  134.         end
  135.       end
  136.       event.send_message(language['success'][upper])
  137.     end
  138.   end
  139.  
  140.   def list_command(args, event)
  141.     language = @language.get_json(event.server.id)['commands']['list']
  142.     if args.empty?
  143.       event.channel.send_embed do |embed|
  144.         embed.title = language['title']
  145.         entries = @client[:nicknamer].where(server_id: event.server.id).map { |entry| event.server.role(entry[:role]).mention }.join(language['delimiter'])
  146.         embed.description = format(language['description'], e: entries)
  147.       end
  148.     else
  149.       event.send_message(language['usage'])
  150.     end
  151.   end
  152.  
  153.   def info_command(args, event)
  154.     language = @language.get_json(event.server.id)['commands']['info']
  155.     if args.length == 1
  156.       role = event.server.role(args[0])
  157.       entry = @client[:nicknamer].first(server_id: event.server.id, role: role&.id)
  158.       if role && entry
  159.         event.channel.send_embed do |embed|
  160.           embed.title = format(language['title'], n: role.name, i: role.id)
  161.           embed.description = format(language['description'], r: role.mention, up: entry[:upper_prefix], us: entry[:upper_suffix], np: entry[:normal_prefix], ns: entry[:normal_suffix])
  162.         end
  163.       else
  164.         event.send_message(language['invalid'])
  165.       end
  166.     else
  167.       event.send_message(language['usage'])
  168.     end
  169.   end
  170.  
  171.   def update_command(args, event)
  172.     language = @language.get_json(event.server.id)['commands']['update']
  173.     if args.length == 1
  174.       user = event.server.member(args[0])
  175.       unless user.nil?
  176.         update_nickname(user)
  177.         event.send_message(language['success'])
  178.       else
  179.         event.send_message(language['invalid'])
  180.     end
  181.     else
  182.       event.send_message(language['usage'])
  183.     end
  184.   end
  185.  
  186.  
  187.   def help(_user, channel)
  188.     command_language = @language.get_json(channel.server.id)['commands']['help']
  189.     channel.send_embed do |embed|
  190.       embed.title = command_language['title']
  191.       embed.description = command_language['description']
  192.       embed.timestamp = Time.now
  193.       embed.color = command_language['color']
  194.     end
  195.   end
  196. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement