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
# 指定したメンバーの詳細情報表示
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)