changed "roleMembers" to "members"

fixed and added details
This commit is contained in:
takumi091111
2017-09-27 01:08:13 +09:00
parent 4b2ea611fb
commit b8bc04b53c

View File

@ -4,9 +4,9 @@ module Bot
extend Discordrb::Commands::CommandContainer 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の数字部分のみ抽出
id = user.slice(/\d+/) id = mention.slice(/\d+/)
# メンバーオブジェクトの取得 # メンバーオブジェクトの取得
member = event.server.member(id) member = event.server.member(id)
# 役職一覧を取得 # 役職一覧を取得
@ -20,28 +20,17 @@ module Bot
end end
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| command(:avatar, usage: 'avatar <メンション>', description: 'メンバーのアバター画像を表示', min_args: 1) do |event, mention|
id = user.slice(/\d+/) id = mention.slice(/\d+/)
member = event.server.member(id) member = event.server.member(id)
# 出力 # 出力
event.respond member.avatar_url event.respond member.avatar_url
end end
# キック # キック
command(:kick, usage: 'kick <メンション>', description: 'メンバーをキック') do |event, user| command(:kick, usage: 'kick <メンション>', description: 'メンバーをキック', min_args: 1) do |event, mention|
id = user.slice(/\d+/) id = mention.slice(/\d+/)
name = event.server.member(id).name name = event.server.member(id).name
event.server.kick(id) event.server.kick(id)
event.respond "**#{name}** Kicked." event.respond "**#{name}** Kicked."
@ -59,50 +48,25 @@ module Bot
end end
end end
command(:roleMembers, usage: 'roleMembers <役職名>', description: "役職ごとのメンバー一覧表示\n引数に指定した役職のみ表示も可能") do |event, rolename| # 役職のメンバー一覧表示
# 引数チェック command(:members, usage: 'members <役職名>', description: "指定した役職のメンバーを一覧表示", min_args: 1) do |event, rolename|
if rolename.nil? # 引数と役職名が一致するものを抜き出す
# 引数無しの時 role = event.server.roles.find {|role| role.name == rolename}
roles = Array.new unless role.nil?
members_name = role.members.map {|member| "@#{member.name}"}
# 役職一覧を取得
event.server.roles.each do |role|
# @everyoneはスキップする
next if role.name == "@everyone"
# 役職のメンバーがいない時はスキップ
next if role.members.empty?
# 役職を配列に追加
roles << role
end
# 埋め込みで役職ごとのメンバーを表示
event.channel.send_embed do |embed| event.channel.send_embed do |embed|
roles.each do |role| embed.add_field(name: "__Members in #{role.name}__", value: "#{members_name.join("\n")}")
members_name = role.members.map {|member| "#{member.name}"} embed.add_field(name: '__Total__', value: "#{members_name.size}")
embed.add_field(name: "__Members in #{role.name}__", value: "#{members_name.join("\n")}")
embed.add_field(name: '__Total__', value: "#{members_name.size}")
end
end end
else else
# 引数有りの時 event.respond '一致する役職がありません'
# 引数と役職名が一致するものを抜き出す break
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
end end
end end
# 役職付加 # 役職付加
command(:setRole, usage: 'setRole <メンション> <役職>', description: 'メンバーに役職を付加') do |event, user, role| command(:setRole, usage: 'setRole <メンション> <役職>', description: 'メンバーに役職を付加', min_args: 2) do |event, mention, role|
id = user.slice(/\d+/) id = mention.slice(/\d+/)
member = event.server.member(id) member = event.server.member(id)
role = event.server.roles.select {|r|r.name == role}[0] role = event.server.roles.select {|r|r.name == role}[0]
member.add_role(role) member.add_role(role)
@ -110,8 +74,8 @@ module Bot
end end
# 役職削除 # 役職削除
command(:delRole, usage: 'delRole <メンション> <役職>', description: 'メンバーから役職を削除') do |event, user, role| command(:delRole, usage: 'delRole <メンション> <役職>', description: 'メンバーから役職を削除', min_args: 2) do |event, mention, role|
id = user.slice(/\d+/) id = mention.slice(/\d+/)
member = event.server.member(id) member = event.server.member(id)
role = event.server.roles.select {|r|r.name == role}[0] role = event.server.roles.select {|r|r.name == role}[0]
member.remove_role(role) member.remove_role(role)