butler 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +4 -0
- data/GPL.txt +340 -0
- data/LICENSE.txt +52 -0
- data/README +37 -0
- data/Rakefile +334 -0
- data/bin/botcontrol +230 -0
- data/data/butler/config_template.yaml +4 -0
- data/data/butler/dialogs/backup.rb +19 -0
- data/data/butler/dialogs/botcontrol.rb +4 -0
- data/data/butler/dialogs/config.rb +1 -0
- data/data/butler/dialogs/create.rb +53 -0
- data/data/butler/dialogs/delete.rb +3 -0
- data/data/butler/dialogs/en/backup.yaml +6 -0
- data/data/butler/dialogs/en/botcontrol.yaml +5 -0
- data/data/butler/dialogs/en/create.yaml +11 -0
- data/data/butler/dialogs/en/delete.yaml +2 -0
- data/data/butler/dialogs/en/help.yaml +17 -0
- data/data/butler/dialogs/en/info.yaml +13 -0
- data/data/butler/dialogs/en/list.yaml +4 -0
- data/data/butler/dialogs/en/notyetimplemented.yaml +2 -0
- data/data/butler/dialogs/en/rename.yaml +3 -0
- data/data/butler/dialogs/en/start.yaml +3 -0
- data/data/butler/dialogs/en/sync_plugins.yaml +3 -0
- data/data/butler/dialogs/en/uninstall.yaml +5 -0
- data/data/butler/dialogs/en/unknown_command.yaml +2 -0
- data/data/butler/dialogs/help.rb +11 -0
- data/data/butler/dialogs/info.rb +27 -0
- data/data/butler/dialogs/interactive.rb +1 -0
- data/data/butler/dialogs/list.rb +10 -0
- data/data/butler/dialogs/notyetimplemented.rb +1 -0
- data/data/butler/dialogs/rename.rb +4 -0
- data/data/butler/dialogs/selectbot.rb +2 -0
- data/data/butler/dialogs/start.rb +5 -0
- data/data/butler/dialogs/sync_plugins.rb +30 -0
- data/data/butler/dialogs/uninstall.rb +17 -0
- data/data/butler/dialogs/unknown_command.rb +1 -0
- data/data/butler/plugins/core/logout.rb +41 -0
- data/data/butler/plugins/core/plugins.rb +134 -0
- data/data/butler/plugins/core/privilege.rb +103 -0
- data/data/butler/plugins/core/user.rb +166 -0
- data/data/butler/plugins/dev/eval.rb +64 -0
- data/data/butler/plugins/dev/nometa.rb +14 -0
- data/data/butler/plugins/dev/onhandlers.rb +93 -0
- data/data/butler/plugins/dev/raw.rb +36 -0
- data/data/butler/plugins/dev/rawlog.rb +77 -0
- data/data/butler/plugins/games/eightball.rb +54 -0
- data/data/butler/plugins/games/mastermind.rb +174 -0
- data/data/butler/plugins/irc/action.rb +36 -0
- data/data/butler/plugins/irc/join.rb +38 -0
- data/data/butler/plugins/irc/notice.rb +36 -0
- data/data/butler/plugins/irc/part.rb +38 -0
- data/data/butler/plugins/irc/privmsg.rb +36 -0
- data/data/butler/plugins/irc/quit.rb +36 -0
- data/data/butler/plugins/operator/deop.rb +41 -0
- data/data/butler/plugins/operator/devoice.rb +41 -0
- data/data/butler/plugins/operator/limit.rb +47 -0
- data/data/butler/plugins/operator/op.rb +41 -0
- data/data/butler/plugins/operator/voice.rb +41 -0
- data/data/butler/plugins/public/help.rb +69 -0
- data/data/butler/plugins/public/login.rb +72 -0
- data/data/butler/plugins/public/usage.rb +49 -0
- data/data/butler/plugins/service/clones.rb +56 -0
- data/data/butler/plugins/service/define.rb +47 -0
- data/data/butler/plugins/service/log.rb +183 -0
- data/data/butler/plugins/service/svn.rb +91 -0
- data/data/butler/plugins/util/cycle.rb +98 -0
- data/data/butler/plugins/util/load.rb +41 -0
- data/data/butler/plugins/util/pong.rb +29 -0
- data/data/butler/strings/random/acknowledge.en.yaml +5 -0
- data/data/butler/strings/random/gratitude.en.yaml +3 -0
- data/data/butler/strings/random/hello.en.yaml +4 -0
- data/data/butler/strings/random/ignorance.en.yaml +7 -0
- data/data/butler/strings/random/ignorance_about.en.yaml +3 -0
- data/data/butler/strings/random/insult.en.yaml +3 -0
- data/data/butler/strings/random/rejection.en.yaml +12 -0
- data/data/man/botcontrol.1 +17 -0
- data/lib/access.rb +187 -0
- data/lib/access/admin.rb +16 -0
- data/lib/access/privilege.rb +122 -0
- data/lib/access/role.rb +102 -0
- data/lib/access/savable.rb +18 -0
- data/lib/access/user.rb +180 -0
- data/lib/access/yamlbase.rb +126 -0
- data/lib/butler.rb +188 -0
- data/lib/butler/bot.rb +247 -0
- data/lib/butler/control.rb +93 -0
- data/lib/butler/dialog.rb +64 -0
- data/lib/butler/initialvalues.rb +40 -0
- data/lib/butler/irc/channel.rb +135 -0
- data/lib/butler/irc/channels.rb +96 -0
- data/lib/butler/irc/client.rb +351 -0
- data/lib/butler/irc/hostmask.rb +53 -0
- data/lib/butler/irc/message.rb +184 -0
- data/lib/butler/irc/parser.rb +125 -0
- data/lib/butler/irc/parser/commands.rb +83 -0
- data/lib/butler/irc/parser/generic.rb +343 -0
- data/lib/butler/irc/socket.rb +378 -0
- data/lib/butler/irc/string.rb +186 -0
- data/lib/butler/irc/topic.rb +15 -0
- data/lib/butler/irc/user.rb +265 -0
- data/lib/butler/irc/users.rb +112 -0
- data/lib/butler/plugin.rb +249 -0
- data/lib/butler/plugin/configproxy.rb +35 -0
- data/lib/butler/plugin/mapper.rb +85 -0
- data/lib/butler/plugin/matcher.rb +55 -0
- data/lib/butler/plugin/onhandlers.rb +70 -0
- data/lib/butler/plugin/trigger.rb +58 -0
- data/lib/butler/plugins.rb +147 -0
- data/lib/butler/version.rb +17 -0
- data/lib/cloptions.rb +217 -0
- data/lib/cloptions/adapters.rb +24 -0
- data/lib/cloptions/switch.rb +132 -0
- data/lib/configuration.rb +223 -0
- data/lib/dialogline.rb +296 -0
- data/lib/dialogline/localizations.rb +24 -0
- data/lib/durations.rb +57 -0
- data/lib/event.rb +295 -0
- data/lib/event/at.rb +64 -0
- data/lib/event/every.rb +56 -0
- data/lib/event/timed.rb +112 -0
- data/lib/installer.rb +75 -0
- data/lib/iterator.rb +34 -0
- data/lib/log.rb +68 -0
- data/lib/log/comfort.rb +85 -0
- data/lib/log/converter.rb +23 -0
- data/lib/log/entry.rb +152 -0
- data/lib/log/fakeio.rb +55 -0
- data/lib/log/file.rb +54 -0
- data/lib/log/filereader.rb +81 -0
- data/lib/log/forward.rb +49 -0
- data/lib/log/methods.rb +39 -0
- data/lib/log/nolog.rb +18 -0
- data/lib/log/splitter.rb +26 -0
- data/lib/ostructfixed.rb +26 -0
- data/lib/ruby/array/columnize.rb +38 -0
- data/lib/ruby/dir/mktree.rb +28 -0
- data/lib/ruby/enumerable/join.rb +13 -0
- data/lib/ruby/exception/detailed.rb +24 -0
- data/lib/ruby/file/append.rb +11 -0
- data/lib/ruby/file/write.rb +11 -0
- data/lib/ruby/hash/zip.rb +15 -0
- data/lib/ruby/kernel/bench.rb +15 -0
- data/lib/ruby/kernel/daemonize.rb +42 -0
- data/lib/ruby/kernel/non_verbose.rb +17 -0
- data/lib/ruby/kernel/safe_fork.rb +18 -0
- data/lib/ruby/range/stepped.rb +11 -0
- data/lib/ruby/string/arguments.rb +72 -0
- data/lib/ruby/string/chunks.rb +15 -0
- data/lib/ruby/string/post_arguments.rb +44 -0
- data/lib/ruby/string/unescaped.rb +17 -0
- data/lib/scheduler.rb +164 -0
- data/lib/scriptfile.rb +101 -0
- data/lib/templater.rb +86 -0
- data/test/cloptions.rb +134 -0
- data/test/cv.rb +28 -0
- data/test/irc/client.rb +85 -0
- data/test/irc/client_login.txt +53 -0
- data/test/irc/client_subscribe.txt +8 -0
- data/test/irc/message.rb +30 -0
- data/test/irc/messages.txt +64 -0
- data/test/irc/parser.rb +13 -0
- data/test/irc/profile_parser.rb +12 -0
- data/test/irc/users.rb +28 -0
- metadata +256 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "action"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
return answer(usage) if @message.arguments.length < 3
|
|
13
|
+
@butler.irc.action(@message.post_arguments[2], @message.arguments[1])
|
|
14
|
+
answer(:sent)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
__END__
|
|
18
|
+
---
|
|
19
|
+
:revision:
|
|
20
|
+
:plugin: 1
|
|
21
|
+
:summary:
|
|
22
|
+
en: Lets butler perform an action in a channel or query (like a /me or /action message)
|
|
23
|
+
:about:
|
|
24
|
+
:mail: "apeiros@gmx.net"
|
|
25
|
+
:version: "1.0.0"
|
|
26
|
+
:author: "Stefan Rusterholz"
|
|
27
|
+
:strings:
|
|
28
|
+
:sent:
|
|
29
|
+
en: Performed action
|
|
30
|
+
:usage:
|
|
31
|
+
en: |
|
|
32
|
+
![b]action![o] (![c(green)]nick![o] | ![c(green)]channel![o]) *![c(blue)]text![o])
|
|
33
|
+
:help:
|
|
34
|
+
en:
|
|
35
|
+
"": |
|
|
36
|
+
Lets butler perform an action in a channel or query (like a /me or /action message)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "join"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
return answer(usage) unless @message.arguments[1]
|
|
13
|
+
answer(:joining, :name => @message.arguments[1])
|
|
14
|
+
@butler.join(@message.arguments[1])
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
__END__
|
|
18
|
+
---
|
|
19
|
+
:revision:
|
|
20
|
+
:plugin: 1
|
|
21
|
+
:summary:
|
|
22
|
+
en: Let Butler join channels
|
|
23
|
+
:about:
|
|
24
|
+
:mail: "apeiros@gmx.net"
|
|
25
|
+
:version: "1.0.0"
|
|
26
|
+
:author: "Stefan Rusterholz"
|
|
27
|
+
:strings:
|
|
28
|
+
:joining:
|
|
29
|
+
en: Joining channel <%= name %>.
|
|
30
|
+
:usage:
|
|
31
|
+
en: |
|
|
32
|
+
![b]join![o] ![c(green)]channel![o]
|
|
33
|
+
:help:
|
|
34
|
+
en:
|
|
35
|
+
"": |
|
|
36
|
+
You can use 'join' to let butler join other channels.
|
|
37
|
+
"related": |
|
|
38
|
+
Related triggers: part.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "notice"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
return answer(usage) if @message.arguments.length < 3
|
|
13
|
+
@butler.irc.notice(@message.post_arguments[2], @message.arguments[1])
|
|
14
|
+
answer(:sent)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
__END__
|
|
18
|
+
---
|
|
19
|
+
:revision:
|
|
20
|
+
:plugin: 1
|
|
21
|
+
:summary:
|
|
22
|
+
en: Let butler send a notice to a user or channel
|
|
23
|
+
:about:
|
|
24
|
+
:mail: "apeiros@gmx.net"
|
|
25
|
+
:version: "1.0.0"
|
|
26
|
+
:author: "Stefan Rusterholz"
|
|
27
|
+
:strings:
|
|
28
|
+
:sent:
|
|
29
|
+
en: Sent the message
|
|
30
|
+
:usage:
|
|
31
|
+
en: |
|
|
32
|
+
![b]notice![o] (![c(green)]nick![o] | ![c(green)]channel![o])
|
|
33
|
+
:help:
|
|
34
|
+
"":
|
|
35
|
+
en: |
|
|
36
|
+
Let butler send a notice to a user or channel.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "part"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
return answer(usage) unless @message.arguments[1]
|
|
13
|
+
answer(:parting, :name => @message.arguments[1])
|
|
14
|
+
@butler.irc.part(@message.arguments[1])
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
__END__
|
|
18
|
+
---
|
|
19
|
+
:revision:
|
|
20
|
+
:plugin: 1
|
|
21
|
+
:summary:
|
|
22
|
+
en: Let Butler part from channels
|
|
23
|
+
:about:
|
|
24
|
+
:mail: "apeiros@gmx.net"
|
|
25
|
+
:version: "1.0.0"
|
|
26
|
+
:author: "Stefan Rusterholz"
|
|
27
|
+
:strings:
|
|
28
|
+
:parting:
|
|
29
|
+
en: Parting channel <%= name %>.
|
|
30
|
+
:usage:
|
|
31
|
+
en: |
|
|
32
|
+
![b]part![o] ![c(green)]channel![o]
|
|
33
|
+
:help:
|
|
34
|
+
en:
|
|
35
|
+
"": |
|
|
36
|
+
You can use 'join' to let butler part from channels.
|
|
37
|
+
"related": |
|
|
38
|
+
Related triggers: join.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "privmsg"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
return answer(usage) if @message.arguments.length < 3
|
|
13
|
+
@butler.irc.privmsg(@message.post_arguments[2], @message.arguments[1])
|
|
14
|
+
answer(:sent)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
__END__
|
|
18
|
+
---
|
|
19
|
+
:revision:
|
|
20
|
+
:plugin: 1
|
|
21
|
+
:summary:
|
|
22
|
+
en: Let butler send a private message to a user or channel
|
|
23
|
+
:about:
|
|
24
|
+
:mail: "apeiros@gmx.net"
|
|
25
|
+
:version: "1.0.0"
|
|
26
|
+
:author: "Stefan Rusterholz"
|
|
27
|
+
:strings:
|
|
28
|
+
:sent:
|
|
29
|
+
en: Sent the message
|
|
30
|
+
:usage:
|
|
31
|
+
en: |
|
|
32
|
+
![b]privmsg![o] (![c(green)]nick![o] | ![c(green)]channel![o])
|
|
33
|
+
:help:
|
|
34
|
+
en:
|
|
35
|
+
"": |
|
|
36
|
+
Let butler send a private message to a user or channel.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "quit"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
@butler.irc.quit(@message.post_arguments[1] || localize(:default_reason))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
__END__
|
|
16
|
+
---
|
|
17
|
+
:revision:
|
|
18
|
+
:plugin: 1
|
|
19
|
+
:summary:
|
|
20
|
+
en: Lets Butler quit from IRC and disconnect from the server.
|
|
21
|
+
:about:
|
|
22
|
+
:mail: "apeiros@gmx.net"
|
|
23
|
+
:version: "1.0.0"
|
|
24
|
+
:author: "Stefan Rusterholz"
|
|
25
|
+
:strings:
|
|
26
|
+
:default_reason:
|
|
27
|
+
en: I was terminated! Bye!
|
|
28
|
+
:usage:
|
|
29
|
+
en: |
|
|
30
|
+
![b]quit![o] [*![c(blue)]reason![o]]
|
|
31
|
+
:help:
|
|
32
|
+
en:
|
|
33
|
+
"": |
|
|
34
|
+
You can use 'quit' to let butler quit from irc and disconnect.
|
|
35
|
+
"related": |
|
|
36
|
+
Related triggers: reconnect.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "deop"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
channels, nicks = [], message.arguments[1..-1]
|
|
13
|
+
channames = @butler.channels.channel_names
|
|
14
|
+
|
|
15
|
+
channels << nicks.pop while channames.include?(nicks.last.downcase)
|
|
16
|
+
nicks << @message.from.nick if nicks.empty?
|
|
17
|
+
channels << @message.channel.to_str if channels.empty?
|
|
18
|
+
|
|
19
|
+
channels.each { |channel|
|
|
20
|
+
@butler.irc.deop(channel, *nicks)
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
__END__
|
|
25
|
+
---
|
|
26
|
+
:revision:
|
|
27
|
+
:plugin: 1
|
|
28
|
+
:summary:
|
|
29
|
+
en: Revoke a users op via butler.
|
|
30
|
+
:about:
|
|
31
|
+
:mail: "apeiros@gmx.net"
|
|
32
|
+
:version: "1.0.0"
|
|
33
|
+
:author: "Stefan Rusterholz"
|
|
34
|
+
:strings:
|
|
35
|
+
:usage:
|
|
36
|
+
en: |
|
|
37
|
+
![b]deop![o] [![c(green)]nick![o] ...] [![c(green)]channel![o] ...]
|
|
38
|
+
:help:
|
|
39
|
+
en:
|
|
40
|
+
"": |
|
|
41
|
+
Revoke a users op via butler.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "devoice"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
channels, nicks = [], message.arguments[1..-1]
|
|
13
|
+
channames = @butler.channels.channel_names
|
|
14
|
+
|
|
15
|
+
channels << nicks.pop while channames.include?(nicks.last.downcase)
|
|
16
|
+
nicks << @message.from.nick if nicks.empty?
|
|
17
|
+
channels << @message.channel.to_str if channels.empty?
|
|
18
|
+
|
|
19
|
+
channels.each { |channel|
|
|
20
|
+
@butler.irc.devoice(channel, *nicks)
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
__END__
|
|
25
|
+
---
|
|
26
|
+
:revision:
|
|
27
|
+
:plugin: 1
|
|
28
|
+
:summary:
|
|
29
|
+
en: Revoke a users voice via butler.
|
|
30
|
+
:about:
|
|
31
|
+
:mail: "apeiros@gmx.net"
|
|
32
|
+
:version: "1.0.0"
|
|
33
|
+
:author: "Stefan Rusterholz"
|
|
34
|
+
:strings:
|
|
35
|
+
:usage:
|
|
36
|
+
en: |
|
|
37
|
+
![b]devoice![o] [![c(green)]nick![o] ...] [![c(green)]channel![o] ...]
|
|
38
|
+
:help:
|
|
39
|
+
en:
|
|
40
|
+
"": |
|
|
41
|
+
Revoke a users voice via butler.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
extend OnHandlers
|
|
10
|
+
|
|
11
|
+
trigger "limit"
|
|
12
|
+
|
|
13
|
+
configuration(
|
|
14
|
+
"channels" => []
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
def on_mode(*args)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def on_trigger
|
|
21
|
+
limit = @message.arguments[1].downcase
|
|
22
|
+
limit = limit == "off" ? nil : Integer(limit)
|
|
23
|
+
rescue
|
|
24
|
+
answer(:invalid_limit, :limit => limit)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
__END__
|
|
28
|
+
---
|
|
29
|
+
:revision:
|
|
30
|
+
:plugin: 1
|
|
31
|
+
:summary:
|
|
32
|
+
en: A slowly shifting channel-limit to avoid join-floods.
|
|
33
|
+
:about:
|
|
34
|
+
:mail: "apeiros@gmx.net"
|
|
35
|
+
:version: "1.0.0"
|
|
36
|
+
:author: "Stefan Rusterholz"
|
|
37
|
+
:strings:
|
|
38
|
+
:invalid_limit:
|
|
39
|
+
en: |
|
|
40
|
+
<%= limit %> is not a valid limit, use either 'off' or a positive number.
|
|
41
|
+
:usage:
|
|
42
|
+
en: |
|
|
43
|
+
![b]limit![o] ('off' | ![c(green)]int![o]) *![c(green)]channel![o] ...
|
|
44
|
+
:help:
|
|
45
|
+
en:
|
|
46
|
+
"": |
|
|
47
|
+
A slowly shifting channel-limit to avoid join-floods.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "op"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
channels, nicks = [], message.arguments[1..-1]
|
|
13
|
+
channames = @butler.channels.channel_names
|
|
14
|
+
|
|
15
|
+
channels << nicks.pop while channames.include?(nicks.last.downcase)
|
|
16
|
+
nicks << @message.from.nick if nicks.empty?
|
|
17
|
+
channels << @message.channel.to_str if channels.empty?
|
|
18
|
+
|
|
19
|
+
channels.each { |channel|
|
|
20
|
+
@butler.irc.op(channel, *nicks)
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
__END__
|
|
25
|
+
---
|
|
26
|
+
:revision:
|
|
27
|
+
:plugin: 1
|
|
28
|
+
:summary:
|
|
29
|
+
en: Grant a user op via butler.
|
|
30
|
+
:about:
|
|
31
|
+
:mail: "apeiros@gmx.net"
|
|
32
|
+
:version: "1.0.0"
|
|
33
|
+
:author: "Stefan Rusterholz"
|
|
34
|
+
:strings:
|
|
35
|
+
:usage:
|
|
36
|
+
en: |
|
|
37
|
+
![b]op![o] [![c(green)]nick![o] ...] [![c(green)]channel![o] ...]
|
|
38
|
+
:help:
|
|
39
|
+
en:
|
|
40
|
+
"": |
|
|
41
|
+
Grant a user op via butler.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "voice"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
channels, nicks = [], message.arguments[1..-1]
|
|
13
|
+
channames = @butler.channels.channel_names
|
|
14
|
+
|
|
15
|
+
channels << nicks.pop while channames.include?(nicks.last.downcase)
|
|
16
|
+
nicks << @message.from.nick if nicks.empty?
|
|
17
|
+
channels << @message.channel.to_str if channels.empty?
|
|
18
|
+
|
|
19
|
+
channels.each { |channel|
|
|
20
|
+
@butler.irc.voice(channel, *nicks)
|
|
21
|
+
}
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
__END__
|
|
25
|
+
---
|
|
26
|
+
:revision:
|
|
27
|
+
:plugin: 1
|
|
28
|
+
:summary:
|
|
29
|
+
en: Grant a user voice via butler.
|
|
30
|
+
:about:
|
|
31
|
+
:mail: "apeiros@gmx.net"
|
|
32
|
+
:version: "1.0.0"
|
|
33
|
+
:author: "Stefan Rusterholz"
|
|
34
|
+
:strings:
|
|
35
|
+
:usage:
|
|
36
|
+
en: |
|
|
37
|
+
![b]voice![o] [![c(green)]nick![o] ...] [![c(green)]channel![o] ...]
|
|
38
|
+
:help:
|
|
39
|
+
en:
|
|
40
|
+
"": |
|
|
41
|
+
Grant a user voice via butler.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
#--
|
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
|
3
|
+
# All rights reserved.
|
|
4
|
+
# See LICENSE.txt for permissions.
|
|
5
|
+
#++
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
trigger "help"
|
|
10
|
+
|
|
11
|
+
def on_trigger
|
|
12
|
+
if @message.arguments[1] then
|
|
13
|
+
plugin = plugin = @butler.plugins.identify(@message.arguments[1])
|
|
14
|
+
if plugin then
|
|
15
|
+
help = @butler.plugins[plugin].help
|
|
16
|
+
help = help[@message.language] || help["en"]
|
|
17
|
+
if @message.arguments.last == "+" then
|
|
18
|
+
topics = help.keys.sort[1..-1].map { |t| "'#{t}'" }.columnize(5)
|
|
19
|
+
answer(:topics, :topics => topics)
|
|
20
|
+
else
|
|
21
|
+
key = @message.arguments[2..-1].join(" ")
|
|
22
|
+
if help = help[key] then
|
|
23
|
+
answer(help.result(self))
|
|
24
|
+
else
|
|
25
|
+
answer(key.empty? ? :nohelp : :notopic, :topic => key)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
else
|
|
29
|
+
answer :noplugin
|
|
30
|
+
end
|
|
31
|
+
else
|
|
32
|
+
help = plugin().help
|
|
33
|
+
help = help[@message.language] || help["en"]
|
|
34
|
+
answer(help[""].result(self))
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
__END__
|
|
39
|
+
---
|
|
40
|
+
:revision:
|
|
41
|
+
:plugin: 1
|
|
42
|
+
:summary:
|
|
43
|
+
en: Displays helping information about other plugins
|
|
44
|
+
:about:
|
|
45
|
+
:mail: "apeiros@gmx.net"
|
|
46
|
+
:version: "1.0.0"
|
|
47
|
+
:author: "Stefan Rusterholz"
|
|
48
|
+
:description:
|
|
49
|
+
:strings:
|
|
50
|
+
:noplugin:
|
|
51
|
+
en: "No plugin with that name loaded."
|
|
52
|
+
:nohelp:
|
|
53
|
+
en: "Plugin doesn't provide any help."
|
|
54
|
+
:notopic:
|
|
55
|
+
en: "Plugin doesn't provide help for '<%= topic %>'."
|
|
56
|
+
:nolang:
|
|
57
|
+
en: "Plugin doesn't provide help for '<%= topic %>' in that language."
|
|
58
|
+
:topics:
|
|
59
|
+
en: |
|
|
60
|
+
Topics for the plugin:
|
|
61
|
+
<%= topics %>
|
|
62
|
+
:usage:
|
|
63
|
+
en: "![b]help![o] [![c(green)]plugin![o] [*![c(blue)]topic![o]]] [+]"
|
|
64
|
+
:help:
|
|
65
|
+
en:
|
|
66
|
+
"": |
|
|
67
|
+
help gives help about itself or a command.
|
|
68
|
+
If + is the last argument, it will list the available help topics.
|
|
69
|
+
Use 'plugins list' to get a list of available commands.
|