From b8bc04b53cf783cd7f54bac292c5375c27f357fd Mon Sep 17 00:00:00 2001 From: takumi091111 Date: Wed, 27 Sep 2017 01:08:13 +0900 Subject: [PATCH] changed "roleMembers" to "members" fixed and added details --- lib/commands/member.rb | 76 +++++++++++------------------------------- 1 file changed, 20 insertions(+), 56 deletions(-) diff --git a/lib/commands/member.rb b/lib/commands/member.rb index d0261c1..abe1e36 100644 --- a/lib/commands/member.rb +++ b/lib/commands/member.rb @@ -4,9 +4,9 @@ module Bot extend Discordrb::Commands::CommandContainer # 指定したメンバーの詳細情報表示 - command(:member, usage: 'member <メンション>', description: 'メンバーの詳細情報を表示') do |event, user| + command(:info, usage: 'info <メンション>', description: 'メンバーの詳細情報を表示', min_args: 1) do |event, mention| # ユーザーIDの数字部分のみ抽出 - id = user.slice(/\d+/) + id = mention.slice(/\d+/) # メンバーオブジェクトの取得 member = event.server.member(id) # 役職一覧を取得 @@ -20,28 +20,17 @@ module Bot end end - # メンバー一覧表示 - command(:members, usage: 'members', description: 'メンバーの一覧を表示') do |event| - members = event.server.members - total = members.size - members_name = members.map {|member| "@#{member.name}"} - event.channel.send_embed do |embed| - embed.add_field(name: '__Members__', value: "#{members_name.join("\n")}") - embed.add_field(name: '__Total__', value: "#{total}") - end - end - # 指定したメンバーのアバター画像表示 - command(:avatar, usage: 'avatar <メンション>', description: 'メンバーのアバター画像を表示') do |event, user| - id = user.slice(/\d+/) + command(:avatar, usage: 'avatar <メンション>', description: 'メンバーのアバター画像を表示', min_args: 1) do |event, mention| + id = mention.slice(/\d+/) member = event.server.member(id) # 出力 event.respond member.avatar_url end # キック - command(:kick, usage: 'kick <メンション>', description: 'メンバーをキック') do |event, user| - id = user.slice(/\d+/) + command(:kick, usage: 'kick <メンション>', description: 'メンバーをキック', min_args: 1) do |event, mention| + id = mention.slice(/\d+/) name = event.server.member(id).name event.server.kick(id) event.respond "**#{name}** Kicked." @@ -59,50 +48,25 @@ module Bot end end - command(:roleMembers, usage: 'roleMembers <役職名>', description: "役職ごとのメンバーを一覧表示\n引数に指定した役職のみ表示も可能") do |event, rolename| - # 引数チェック - if rolename.nil? - # 引数無しの時 - roles = Array.new - - # 役職一覧を取得 - event.server.roles.each do |role| - # @everyoneはスキップする - next if role.name == "@everyone" - # 役職のメンバーがいない時はスキップ - next if role.members.empty? - # 役職を配列に追加 - roles << role - end - - # 埋め込みで役職ごとのメンバーを表示 + # 役職のメンバー一覧表示 + command(:members, usage: 'members <役職名>', description: "指定した役職のメンバーを一覧表示", min_args: 1) do |event, rolename| + # 引数と役職名が一致するものを抜き出す + role = event.server.roles.find {|role| role.name == rolename} + unless role.nil? + members_name = role.members.map {|member| "@#{member.name}"} event.channel.send_embed do |embed| - roles.each do |role| - members_name = role.members.map {|member| "#{member.name}"} - embed.add_field(name: "__Members in #{role.name}__", value: "#{members_name.join("\n")}") - embed.add_field(name: '__Total__', value: "#{members_name.size}") - end + embed.add_field(name: "__Members in #{role.name}__", value: "#{members_name.join("\n")}") + embed.add_field(name: '__Total__', value: "#{members_name.size}") end else - # 引数有りの時 - # 引数と役職名が一致するものを抜き出す - role = event.server.roles.find {|role| role.name == rolename} - unless role.nil? - members_name = role.members.map {|member| "@#{member.name}"} - event.channel.send_embed do |embed| - embed.add_field(name: "__Members in #{role.name}__", value: "#{members_name.join("\n")}") - embed.add_field(name: '__Total__', value: "#{members_name.size}") - end - else - event.respond '一致する役職がありません' - break - end + event.respond '一致する役職がありません' + break end end # 役職付加 - command(:setRole, usage: 'setRole <メンション> <役職>', description: 'メンバーに役職を付加') do |event, user, role| - id = user.slice(/\d+/) + command(:setRole, usage: 'setRole <メンション> <役職>', description: 'メンバーに役職を付加', min_args: 2) do |event, mention, role| + id = mention.slice(/\d+/) member = event.server.member(id) role = event.server.roles.select {|r|r.name == role}[0] member.add_role(role) @@ -110,8 +74,8 @@ module Bot end # 役職削除 - command(:delRole, usage: 'delRole <メンション> <役職>', description: 'メンバーから役職を削除') do |event, user, role| - id = user.slice(/\d+/) + command(:delRole, usage: 'delRole <メンション> <役職>', description: 'メンバーから役職を削除', min_args: 2) do |event, mention, role| + id = mention.slice(/\d+/) member = event.server.member(id) role = event.server.roles.select {|r|r.name == role}[0] member.remove_role(role)