lib/protonbot/chanop/commands.rb in protonbot-chanop-0.1.1 vs lib/protonbot/chanop/commands.rb in protonbot-chanop-0.1.2

- old
+ new

@@ -126,49 +126,83 @@ when 2..512 dat[:plug].unexcempt(dat[:split][0], '*!*@' + dat[:plug].gethost(dat[:split][1])) end end.perm!('excempt') -core.help_add('chanop', 'kick', 'kick [chan] <target>', +core.help_add('chanop', 'kick', 'kick [chan] <target> [reason]', 'Kicks target from this/given channel') cmd(cmd: 'kick') do |dat| case dat[:split].length when 0 dat.nreply 'Not enough parameters!' when 1 dat[:plug].kick(dat[:target], dat[:split][0]) when 2..512 - dat[:plug].kick(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length-1].join(' ')) + if %w(# + ! &).include? dat[:split][0][0] + dat[:plug].kick(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length].join(' ')) + else + dat[:plug].kick(dat[:target], dat[:split][0], dat[:split][1..dat[:split].length].join(' ')) + end end end.perm!('kick') +core.help_add('chanop', 'remove', 'remove [chan] <target> [reason]') cmd(cmd: 'remove') do |dat| case dat[:split].length when 0 dat.nreply 'Not enough parameters!' when 1 dat[:plug].remove(dat[:target], dat[:split][0]) when 2..512 - dat[:plug].remove(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length-1].join(' ')) + if %w(# + ! &).include? dat[:split][0][0] + dat[:plug].remove(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length].join(' ')) + else + dat[:plug].remove(dat[:target], dat[:split][0], dat[:split][1..dat[:split].length].join(' ')) + end end end.perm!('remove') -core.help_add('chanop', 'kban', 'kban [chan] <target>', +core.help_add('chanop', 'kban', 'kban [chan] <target> [reason]', 'Kickbans target from this/given channel') cmd(cmd: 'kban') do |dat| case dat[:split].length when 0 dat.nreply 'Not enough parameters!' when 1 dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) dat[:plug].kick(dat[:target], dat[:split][0]) when 2..512 - dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) - dat[:plug].kick(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length-1].join(' ')) + if %w(# + ! &).include? dat[:split][0][0] + dat[:plug].ban(dat[:split][0], '*!*@' + dat[:plug].gethost(dat[:split][1])) + dat[:plug].kick(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length].join(' ')) + else + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + dat[:plug].kick(dat[:target], dat[:split][0], dat[:split][1..dat[:split].length].join(' ')) + end end -end.perm!('kickban') +end.perm!('kick', 'ban') +core.help_add('chanop', 'rban', 'rban [chan] <target> [reason]', + 'Removebans target from this/given channel') +cmd(cmd: 'rban') do |dat| + case dat[:split].length + when 0 + dat.nreply 'Not enough parameters!' + when 1 + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + dat[:plug].remove(dat[:target], dat[:split][0]) + when 2..512 + if %w(# + ! &).include? dat[:split][0][0] + dat[:plug].ban(dat[:split][0], '*!*@' + dat[:plug].gethost(dat[:split][1])) + dat[:plug].remove(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length].join(' ')) + else + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + dat[:plug].remove(dat[:target], dat[:split][0], dat[:split][1..dat[:split].length].join(' ')) + end + end +end.perm!('remove', 'ban') + core.help_add('chanop', 'arjk', 'arjk [chan] <target>', 'Anti-Rejoin-Kicks target from this/given channel') cmd(cmd: 'arjk') do |dat| case dat[:split].length when 0 @@ -177,16 +211,23 @@ dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) dat[:plug].kick(dat[:target], dat[:split][0]) sleep(5) dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) when 2..512 - dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) - dat[:plug].kick(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length-1].join(' ')) - sleep(5) - dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) + if %w(# + ! &).include? dat[:split][0][0] + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) + dat[:plug].kick(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length].join(' ')) + sleep(5) + dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) + else + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + dat[:plug].kick(dat[:target], dat[:split][0], dat[:split][1..dat[:split].length].join(' ')) + sleep(5) + dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + end end -end.perm!('arjk') +end.perm!('kick', 'ban') core.help_add('chanop', 'arjr', 'arjr [chan] <target>', 'Anti-Rejoin-Removes target from this/given channel') cmd(cmd: 'arjr') do |dat| case dat[:split].length @@ -196,35 +237,42 @@ dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) dat[:plug].remove(dat[:target], dat[:split][0]) sleep(5) dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) when 2..512 - dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) - dat[:plug].remove(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length-1].join(' ')) - sleep(5) - dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) + if %w(# + ! &).include? dat[:split][0][0] + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) + dat[:plug].remove(dat[:split][0], dat[:split][1], dat[:split][2..dat[:split].length].join(' ')) + sleep(5) + dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][1])) + else + dat[:plug].ban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + dat[:plug].remove(dat[:target], dat[:split][0], dat[:split][1..dat[:split].length].join(' ')) + sleep(5) + dat[:plug].unban(dat[:target], '*!*@' + dat[:plug].gethost(dat[:split][0])) + end end -end.perm!('arjr') +end.perm!('remove', 'ban') core.help_add('chanop', 'umode', 'umode [chan] <user> <mode>', 'Sets given mode on given user at this/given channel') cmd(cmd: 'umode') do |dat| case dat[:split].length when 0..1 dat.nreply 'Not enough parameters!' when 2 unless /[+-]/ =~ dat[:split][1][0] dat.nreply 'Wrong mode!' - break + else + dat[:plug].usermode(dat[:target], dat[:split][0], dat[:split][1]) end - dat[:plug].usermode(dat[:target], dat[:split][0], dat[:split][1]) when 3..512 unless /[+-]/ =~ dat[:split][2][0] dat.nreply 'Wrong mode!' - break + else + dat[:plug].usermode(dat[:split][0], dat[:split][1], dat[:split][2]) end - dat[:plug].usermode(dat[:split][0], dat[:split][1], dat[:split][2]) end end.perm!('umode') core.help_add('chanop', 'umode', 'umode [chan] <mode>', 'Sets given mode on this/given channel') @@ -256,6 +304,6 @@ when 1 dat[:plug].invite(dat[:target], dat[:split][0]) when 2..512 dat[:plug].invite(dat[:split][0], dat[:split][1]) end -end.perm!('invite') +end.perm!('invite') \ No newline at end of file