butler 1.8.1 → 1.8.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.txt +212 -0
- data/{README → README.txt} +0 -0
- data/Rakefile +16 -11
- data/bin/botcontrol +35 -14
- data/data/butler/dialogs/create.rb +29 -40
- data/data/butler/dialogs/create_config.rb +1 -1
- data/data/butler/dialogs/dir.rb +13 -0
- data/data/butler/dialogs/en/create.yaml +24 -10
- data/data/butler/dialogs/en/dir.yaml +5 -0
- data/data/butler/dialogs/en/help.yaml +28 -11
- data/data/butler/dialogs/en/quickcreate.yaml +14 -0
- data/data/butler/dialogs/help.rb +16 -4
- data/data/butler/dialogs/quickcreate.rb +49 -0
- data/data/butler/plugins/core/access.rb +211 -0
- data/data/butler/plugins/core/logout.rb +11 -11
- data/data/butler/plugins/core/plugins.rb +23 -41
- data/data/butler/plugins/dev/bleakhouse.rb +46 -0
- data/data/butler/plugins/games/roll.rb +1 -1
- data/data/butler/plugins/operator/deop.rb +15 -20
- data/data/butler/plugins/operator/devoice.rb +14 -20
- data/data/butler/plugins/operator/limit.rb +56 -21
- data/data/butler/plugins/operator/op.rb +15 -20
- data/data/butler/plugins/operator/voice.rb +15 -20
- data/data/butler/plugins/service/define.rb +3 -3
- data/data/butler/plugins/service/more.rb +40 -0
- data/data/butler/plugins/util/cycle.rb +1 -1
- data/data/butler/plugins/util/load.rb +5 -5
- data/data/butler/plugins/util/pong.rb +3 -2
- data/lib/access/privilege.rb +17 -0
- data/lib/access/role.rb +33 -2
- data/lib/access/savable.rb +6 -0
- data/lib/access/yamlbase.rb +1 -2
- data/lib/butler/bot.rb +40 -7
- data/lib/butler/debuglog.rb +17 -0
- data/lib/butler/dialog.rb +1 -1
- data/lib/butler/irc/{channels.rb → channellist.rb} +2 -2
- data/lib/butler/irc/client.rb +60 -79
- data/lib/butler/irc/client/filter.rb +12 -0
- data/lib/butler/irc/client/listener.rb +55 -0
- data/lib/butler/irc/client/listenerlist.rb +69 -0
- data/lib/butler/irc/hostmask.rb +31 -16
- data/lib/butler/irc/message.rb +3 -3
- data/lib/butler/irc/parser.rb +2 -2
- data/lib/butler/irc/parser/rfc2812.rb +2 -6
- data/lib/butler/irc/socket.rb +12 -6
- data/lib/butler/irc/string.rb +4 -0
- data/lib/butler/irc/user.rb +0 -6
- data/lib/butler/irc/{users.rb → userlist.rb} +2 -2
- data/lib/butler/irc/whois.rb +6 -0
- data/lib/butler/plugin.rb +48 -14
- data/lib/butler/plugin/configproxy.rb +20 -0
- data/lib/butler/plugin/mapper.rb +308 -24
- data/lib/butler/plugin/matcher.rb +3 -1
- data/lib/butler/plugin/more.rb +65 -0
- data/lib/butler/plugin/onhandlers.rb +4 -4
- data/lib/butler/plugin/trigger.rb +4 -2
- data/lib/butler/plugins.rb +1 -1
- data/lib/butler/session.rb +11 -0
- data/lib/butler/version.rb +1 -1
- data/lib/cloptions.rb +1 -1
- data/lib/diagnostics.rb +20 -0
- data/lib/dialogline.rb +1 -1
- data/lib/durations.rb +19 -6
- data/lib/event.rb +8 -5
- data/lib/installer.rb +10 -3
- data/lib/ostructfixed.rb +11 -0
- data/lib/ruby/kernel/daemonize.rb +1 -2
- data/test/butler/plugin/mapper.rb +46 -0
- metadata +28 -11
- data/CHANGELOG +0 -44
- data/data/butler/plugins/core/privilege.rb +0 -103
@@ -1,6 +1,6 @@
|
|
1
1
|
begin
|
2
2
|
user = variables.user || variables.botcontrol.user
|
3
|
-
variables.botcontrol.configure_user unless variables.botcontrol.configured?(user)
|
3
|
+
variables.botcontrol.configure_user(user) unless variables.botcontrol.configured?(user)
|
4
4
|
Butler.path = variables.botcontrol.butler_path
|
5
5
|
rescue Errno::EACCES
|
6
6
|
say :cant_configure, :user => user, :app => $0
|
@@ -0,0 +1,13 @@
|
|
1
|
+
if !variables.botcontrol.configured? then
|
2
|
+
say(:not_configured)
|
3
|
+
elsif !Butler.exists?(nil, variables.botname)
|
4
|
+
say(:no_such_bot, :botname => variables.botname)
|
5
|
+
else
|
6
|
+
bot = Butler.new(nil, variables.botname)
|
7
|
+
path = variables.dirname.to_sym
|
8
|
+
if path = bot.path[path]
|
9
|
+
say(:path, :dirname => variables.dirname, :path => path)
|
10
|
+
else
|
11
|
+
say(:no_such_dir, :dirname => variables.dirname)
|
12
|
+
end
|
13
|
+
end
|
@@ -1,11 +1,25 @@
|
|
1
1
|
---
|
2
|
-
:
|
3
|
-
:
|
4
|
-
:
|
5
|
-
:
|
6
|
-
:
|
7
|
-
:
|
8
|
-
:
|
9
|
-
:
|
10
|
-
:
|
11
|
-
:
|
2
|
+
:sudo_user: "You are running 'create' with sudo, botcontrol will create the bot for <%= ENV['SUDO_USER'] %>, continue"
|
3
|
+
:name: "Please choose a name for the bot (alphanumeric characters only)"
|
4
|
+
:delete_existing: "A bot named <%= name %> already exists, do you wish to delete it"
|
5
|
+
:quicksetup: "Do you wish to do a quick configuration (you can use '<%= $0 %> config <%= name %>' any time)"
|
6
|
+
:server: "Servername to connect to"
|
7
|
+
:port: "Port to connect on"
|
8
|
+
:connect_delay: "Delay before trying to reconnect"
|
9
|
+
:connect_tries: "Number of tries to reconnect"
|
10
|
+
:server_encoding: "Main charset-encoding of the server"
|
11
|
+
:language: "The main language"
|
12
|
+
:nick: "Nickname of the bot"
|
13
|
+
:user: "Username of the bot"
|
14
|
+
:real: "Realname of the bot"
|
15
|
+
:nickpass: "The password for the nick (empty if not registered)"
|
16
|
+
:channels: "Comma separated list of channels to join on login"
|
17
|
+
:config_channel: "Configuration for channel <%= name %>"
|
18
|
+
:channel_password: "Password to join the channel"
|
19
|
+
:channel_language: "Language in the channel"
|
20
|
+
:channel_encoding: "Charset encoding used in the channel"
|
21
|
+
:admin_user: "Please choose a username for the bot-admin"
|
22
|
+
:admin_pass: "The password for the bot-admin"
|
23
|
+
:how_to_start: |
|
24
|
+
You can now start your bot using '<%= $0 %> start <%= name %>'.
|
25
|
+
You can then authenticate as administrator of the bot in irc using '/msg <%= botname %> login <%= user %> <%= pass %>'.
|
@@ -2,16 +2,33 @@
|
|
2
2
|
:help: |-
|
3
3
|
This is the tool to administrate your irc-bots.
|
4
4
|
The the following commands are available:
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
5
|
+
backup: make a backup of an existing bot
|
6
|
+
config: configure an existing bot
|
7
|
+
create: create a new bot
|
8
|
+
delete: delete an existing bot
|
9
|
+
dir: shows directories to specific parts of a specific bot
|
10
|
+
help: get help about a command or a topic
|
11
|
+
info: displays information about user, bots and paths
|
12
|
+
interactive: run botcontrol interactively
|
13
|
+
log: browse the logs of a bot
|
14
|
+
list: list all existing bots
|
15
|
+
rename: rename an existing bot
|
16
|
+
setup: setup botcontrol for usage
|
17
|
+
start: start one of your bots
|
18
|
+
stop: stop a running bot
|
19
|
+
sync_plugins: sync the plugins of a bot with your local repository
|
20
|
+
uninstall: uninstall butler
|
14
21
|
:tutorial: The tutorial is on http://butler.rubyforge.org/tutorial
|
15
22
|
:plugins: You can download plugins from http://rubyforge.org/frs/?group_id=1349
|
16
|
-
:manual: The manual is on http://butler.rubyforge.org/manual
|
17
|
-
:home: Butlers home is on http://butler.rubyforge.org/
|
23
|
+
:manual: The manual is on http://butler.rubyforge.org/manual.html
|
24
|
+
:home: Butlers home is on http://butler.rubyforge.org/
|
25
|
+
:topics: |-
|
26
|
+
Available help topics are:
|
27
|
+
backup info setup
|
28
|
+
config interactive start
|
29
|
+
create log stop
|
30
|
+
delete list sync_plugins
|
31
|
+
dir manual tutorial
|
32
|
+
help plugins uninstall
|
33
|
+
home rename
|
34
|
+
:unknown: The command <%= name %> is not known, use 'help topics' to get a list of help topics.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
:sudo_user: "You are running 'create' with sudo, botcontrol will create the bot for <%= ENV['SUDO_USER'] %>, continue"
|
3
|
+
:name: "Please choose a name for the bot (alphanumeric characters only)"
|
4
|
+
:delete_existing: "A bot named <%= name %> already exists, do you wish to delete it"
|
5
|
+
:quicksetup: "Do you wish to do a quick configuration (you can use '<%= $0 %> config <%= name %>' any time)"
|
6
|
+
:server: "Servername to connect to"
|
7
|
+
:language: "The main language"
|
8
|
+
:channels: "Comma separated list of channels to join on login"
|
9
|
+
:user: "Please choose a username for the bot-admin"
|
10
|
+
:pass: "The password for the bot-admin"
|
11
|
+
:nickpass: "The password for the nick (empty if not registered)"
|
12
|
+
:how_to_start: |
|
13
|
+
You can now start your bot using '<%= $0 %> start <%= name %>'.
|
14
|
+
You can then authenticate as administrator of the bot in irc using '/msg <%= botname %> login <%= user %> <%= pass %>'.
|
data/data/butler/dialogs/help.rb
CHANGED
@@ -1,10 +1,22 @@
|
|
1
1
|
if variables.command then
|
2
2
|
case variables.command
|
3
|
-
when "
|
4
|
-
when "
|
5
|
-
when "
|
3
|
+
when "manual": say(:manual)
|
4
|
+
when "plugins": say(:plugins)
|
5
|
+
when "topics": say(:topics)
|
6
|
+
when "tutorial": say(:tutorial)
|
6
7
|
else
|
7
|
-
variables.options[variables.command]
|
8
|
+
if found = variables.options[variables.command] then
|
9
|
+
options = found.help.sub(/.*?\n.*?\n/,'').gsub(/^/, ' ')
|
10
|
+
puts found.usage
|
11
|
+
if options.strip.empty? then
|
12
|
+
puts "Command doesn't have options"
|
13
|
+
else
|
14
|
+
puts "Options:\n"
|
15
|
+
puts options
|
16
|
+
end
|
17
|
+
else
|
18
|
+
say(:unknown, :name => variables.command)
|
19
|
+
end
|
8
20
|
end
|
9
21
|
else
|
10
22
|
say(:help)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
exit if ENV["SUDO_USER"] && !prompt(:sudo_user, false)
|
2
|
+
name = variables.name
|
3
|
+
while Butler.exists?(nil, name)
|
4
|
+
if prompt(:delete_existing, false)
|
5
|
+
Butler.delete(nil, name)
|
6
|
+
else
|
7
|
+
name = ask(:name, "butler", String, :matching => /\A[A-Za-z0-9_]+\z/)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
Butler.create(nil, name)
|
11
|
+
bot = Butler.new(nil, name)
|
12
|
+
|
13
|
+
nick = name
|
14
|
+
bot.config["connections/main/server"] = server=ask(:server, "irc.freenode.org", String, :min => 3)
|
15
|
+
bot.config["connections/main/port"] = 6667
|
16
|
+
bot.config["connections/main/host"] = nil
|
17
|
+
bot.config["connections/main/reconnect_delay"] = 60
|
18
|
+
bot.config["connections/main/reconnect_tries"] = -1
|
19
|
+
bot.config["connections/main/charset"] = 'utf-8'
|
20
|
+
bot.config["connections/main/language"] = lang=ask(:language, "en", String, :matching => /\A#[A-Za-z0-9_-]{2,40}\z/)
|
21
|
+
bot.config["connections/main/nick"] = name
|
22
|
+
bot.config["connections/main/alternative"] = name[0,7]+"_"
|
23
|
+
bot.config["connections/main/user"] = name
|
24
|
+
bot.config["connections/main/real"] = name+" (Butler IRC bot)"
|
25
|
+
bot.config["connections/main/password"] = ask(:nickpass, nil, String)
|
26
|
+
bot.config["connections/main/identify"] = :auto
|
27
|
+
bot.config["connections/main/channels"] = channels=ask(:channels, (server == "irc.freenode.org" ? ["#butler"] : nil), Array, String, :matching => /\A#[^\0\s,]+\z/)
|
28
|
+
channels.each { |channel|
|
29
|
+
prefix = "channels/#{server.config_key}/#{channel.config_key}"
|
30
|
+
bot.config["#{prefix}/password"] = nil
|
31
|
+
bot.config["#{prefix}/language"] = lang
|
32
|
+
bot.config["#{prefix}/charset"] = 'utf-8'
|
33
|
+
}
|
34
|
+
user = ask(:user, nil, String, :min => 3)
|
35
|
+
pass = ask(:pass, nil, String, :min => 3)
|
36
|
+
admin = bot.access.user.create(user, pass, nil, true, :active => true)
|
37
|
+
role = bot.access.role.create("default_role", "This role is applied to every user")
|
38
|
+
role.privileges.add(%w[
|
39
|
+
plugin/public
|
40
|
+
plugin/core/login
|
41
|
+
plugin/core/logout
|
42
|
+
plugin/core/help
|
43
|
+
plugin/core/usage
|
44
|
+
])
|
45
|
+
user = bot.access.user.create("default_user", nil, nil, false, :active => true)
|
46
|
+
user.roles.add(%w[default_role])
|
47
|
+
|
48
|
+
puts
|
49
|
+
say(:how_to_start, :botname => nick, :user => user, :pass => pass)
|
@@ -0,0 +1,211 @@
|
|
1
|
+
#--
|
2
|
+
# Copyright 2007 by Stefan Rusterholz.
|
3
|
+
# All rights reserved.
|
4
|
+
# See LICENSE.txt for permissions.
|
5
|
+
#++
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
# add/remove privileges to/from roles
|
10
|
+
|
11
|
+
def user
|
12
|
+
@butler.access.user
|
13
|
+
end
|
14
|
+
|
15
|
+
def role
|
16
|
+
@butler.access.role
|
17
|
+
end
|
18
|
+
|
19
|
+
def on_users(params)
|
20
|
+
users = params.grep ? user.keys : user.keys.grep(/#{params.grep}/)
|
21
|
+
answer(:userlist, :list => users)
|
22
|
+
end
|
23
|
+
|
24
|
+
# "create user :username"
|
25
|
+
def on_create_user(params)
|
26
|
+
name, pass, active = @message.arguments[2,3]
|
27
|
+
params.username.downcase!
|
28
|
+
if user.exists?(params.username) then
|
29
|
+
answer(:user_already_exists, :username => params.username)
|
30
|
+
else
|
31
|
+
user.create(
|
32
|
+
params.username,
|
33
|
+
params.password,
|
34
|
+
nil,
|
35
|
+
false,
|
36
|
+
:active => !!params.active
|
37
|
+
)
|
38
|
+
user[params.username].roles.add("default_role")
|
39
|
+
answer(:user_created, :username => params.username)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# "delete user :username"
|
44
|
+
def on_delete_user(params)
|
45
|
+
params.username.downcase!
|
46
|
+
if user.exists?(params.username) then
|
47
|
+
user.delete(params.username)
|
48
|
+
answer(:user_deleted, :username => params.username)
|
49
|
+
else
|
50
|
+
answer(:user_doesnt_exist, :username => params.username)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def on_create_role(params)
|
55
|
+
params.rolename.downcase!
|
56
|
+
return answer(:role_already_exists, :rolename => params.rolename) if role.exists?(params.rolename)
|
57
|
+
role.create(params.rolename, params.description)
|
58
|
+
answer(:role_created, :rolename => params.rolename)
|
59
|
+
end
|
60
|
+
|
61
|
+
def on_delete_role(params)
|
62
|
+
params.rolename.downcase!
|
63
|
+
return answer(:role_doesnt_exist, :rolename => params.rolename) unless role.exists?(params.rolename)
|
64
|
+
role.delete(params.rolename)
|
65
|
+
answer(:role_deleted, :rolename => params.rolename)
|
66
|
+
end
|
67
|
+
|
68
|
+
# "grant privilege :privilege to user :username"
|
69
|
+
def on_grant_privilege_to_user(params)
|
70
|
+
params.username.downcase!
|
71
|
+
return answer(:user_doesnt_exist, :username => params.username) unless user.exists?(params.username)
|
72
|
+
user[params.username].privileges.add(params.privilege)
|
73
|
+
answer(:privilege_granted_to_user, :username => params.username, :privilege => params.privilege)
|
74
|
+
end
|
75
|
+
|
76
|
+
# "revoke privilege :privilege from user :username"
|
77
|
+
def on_revoke_privilege_from_user(params)
|
78
|
+
params.username.downcase!
|
79
|
+
return answer(:user_doesnt_exist, :username => params.username) unless user.exists?(params.username)
|
80
|
+
user[params.username].privileges.remove(params.privilege)
|
81
|
+
answer(:privilege_revoked_from_user, :username => params.username, :privilege => params.privilege)
|
82
|
+
end
|
83
|
+
|
84
|
+
# "grant privilege :privilege to role :username"
|
85
|
+
def on_grant_privilege_to_role(params)
|
86
|
+
params.rolename.downcase!
|
87
|
+
return answer(:role_doesnt_exist, :rolename => params.rolename) unless role.exists?(params.rolename)
|
88
|
+
role[params.rolename].privileges.add(role[params.privilege])
|
89
|
+
answer(:privilege_granted_to_role, :rolename => params.rolename, :privilege => params.privilege)
|
90
|
+
end
|
91
|
+
|
92
|
+
# "revoke privilege :privilege from role :username"
|
93
|
+
def on_revoke_privilege_from_role(params)
|
94
|
+
params.rolename.downcase!
|
95
|
+
return answer(:role_doesnt_exist, :rolename => params.rolename) unless role.exists?(params.rolename)
|
96
|
+
role[params.rolename].privileges.remove(role[params.privilege])
|
97
|
+
answer(:privilege_revoked_from_role, :rolename => params.rolename, :privilege => params.privilege)
|
98
|
+
end
|
99
|
+
|
100
|
+
# "add role :role to user :username"
|
101
|
+
def on_add_role_to_user(params)
|
102
|
+
params.username.downcase!
|
103
|
+
params.rolename.downcase!
|
104
|
+
return answer(:user_doesnt_exist, :username => params.username) unless user.exists?(params.username)
|
105
|
+
return answer(:role_doesnt_exist, :username => params.rolename) unless role.exists?(params.rolename)
|
106
|
+
user[params.username].roles.add(role[params.rolename])
|
107
|
+
answer(:role_added_to_user, :username => params.username, :rolename => params.rolename)
|
108
|
+
end
|
109
|
+
|
110
|
+
# "remove role :role from user :username"
|
111
|
+
def on_remove_role_from_user(params)
|
112
|
+
params.username.downcase!
|
113
|
+
params.rolename.downcase!
|
114
|
+
return answer(:user_doesnt_exist, :username => params.username) unless user.exists?(params.username)
|
115
|
+
return answer(:role_doesnt_exist, :username => params.rolename) unless role.exists?(params.rolename)
|
116
|
+
user[params.username].roles.remove(role[params.rolename])
|
117
|
+
answer(:role_removed_from_user, :username => params.username, :rolename => params.rolename)
|
118
|
+
end
|
119
|
+
|
120
|
+
def on_set_my_password(params)
|
121
|
+
|
122
|
+
end
|
123
|
+
|
124
|
+
__END__
|
125
|
+
---
|
126
|
+
:about:
|
127
|
+
:mail: "apeiros@gmx.net"
|
128
|
+
:version: "1.0.0"
|
129
|
+
:author: "Stefan Rusterholz"
|
130
|
+
:help:
|
131
|
+
en:
|
132
|
+
"": |
|
133
|
+
Manage your users, roles and privileges.
|
134
|
+
:map:
|
135
|
+
:on_users:
|
136
|
+
en: "show all users [matching :grep]"
|
137
|
+
:on_set_my_password:
|
138
|
+
en: "set my password to :newpassword"
|
139
|
+
:on_create_user:
|
140
|
+
en: "create user :username [with password :password] [:active{active}]"
|
141
|
+
:on_delete_user:
|
142
|
+
en: "delete user :rolename"
|
143
|
+
:on_create_role:
|
144
|
+
en: "create role :rolename [with description +description]"
|
145
|
+
:on_delete_role:
|
146
|
+
en: "delete role :rolename"
|
147
|
+
:on_activate_user:
|
148
|
+
en: "activate user :username"
|
149
|
+
:on_deactivate_user:
|
150
|
+
en: "deactivate user :username"
|
151
|
+
:on_grant_privilege_to_user:
|
152
|
+
en: "grant privilege :privilege to user :username"
|
153
|
+
:on_revoke_privilege_from_user:
|
154
|
+
en: "revoke privilege :privilege from user :username"
|
155
|
+
:on_grant_privilege_to_role:
|
156
|
+
en: "grant privilege :privilege to role :rolename"
|
157
|
+
:on_revoke_privilege_from_role:
|
158
|
+
en: "revoke privilege :privilege from role :rolename"
|
159
|
+
:on_add_role_to_user:
|
160
|
+
en: "add role :rolename to user :username"
|
161
|
+
:on_remove_role_from_user:
|
162
|
+
en: "remove role :rolename from user :username"
|
163
|
+
:on_add_role_to_role:
|
164
|
+
en: "add role :rolename to role :rolename2"
|
165
|
+
:on_remove_role_from_role:
|
166
|
+
en: "remove role :rolename from role :rolename2"
|
167
|
+
:revision:
|
168
|
+
:plugin: 1
|
169
|
+
:strings:
|
170
|
+
:userlist:
|
171
|
+
en: "<%= list.columnize(5) %>"
|
172
|
+
:activated:
|
173
|
+
en: "Activated user <%= username %>."
|
174
|
+
:deactivated:
|
175
|
+
en: "Deactivated user <%= username %>."
|
176
|
+
:user_already_exists:
|
177
|
+
en: "User <%= username %> exists already."
|
178
|
+
:user_doesnt_exist:
|
179
|
+
en: "User <%= username %> does not exist."
|
180
|
+
:user_created:
|
181
|
+
en: "Created user <%= username %>."
|
182
|
+
:user_deleted:
|
183
|
+
en: "Deleted user <%= username %>."
|
184
|
+
:role_already_exists:
|
185
|
+
en: "Role <%= rolename %> exists already."
|
186
|
+
:role_doesnt_exist:
|
187
|
+
en: "Role <%= rolename %> does not exist."
|
188
|
+
:role_created:
|
189
|
+
en: "Created role <%= rolename %>."
|
190
|
+
:role_deleted:
|
191
|
+
en: "Deleted role <%= rolename %>."
|
192
|
+
:privilege_granted_to_user:
|
193
|
+
en: "Granted privilege <%= privilege %> to user <%= username %>."
|
194
|
+
:privilege_revoked_from_user:
|
195
|
+
en: "Revoked privilege <%= privilege %> from user <%= username %>."
|
196
|
+
:privilege_granted_to_role:
|
197
|
+
en: "Granted privilege <%= privilege %> to role <%= rolename %>."
|
198
|
+
:privilege_revoked_from_role:
|
199
|
+
en: "Revoked privilege <%= privilege %> from role <%= rolename %>."
|
200
|
+
:role_added_to_user:
|
201
|
+
en: "Added role <%= rolename %> to user <%= username %>."
|
202
|
+
:role_removed_from_user:
|
203
|
+
en: "Removed role <%= rolename %> from user <%= username %>."
|
204
|
+
:role_added_to_role:
|
205
|
+
en: "Added role <%= rolename %> to role <%= rolename2 %>."
|
206
|
+
:role_removed_from_role:
|
207
|
+
en: "Removed role <%= rolename %> from role <%= rolename2 %>."
|
208
|
+
:summary:
|
209
|
+
en: "Manage your users."
|
210
|
+
:usage:
|
211
|
+
en: "see help access commands for all commands access provides."
|
@@ -6,8 +6,6 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
trigger "logout"
|
10
|
-
|
11
9
|
def on_trigger
|
12
10
|
if @butler.access.default_user == @message.from.access then
|
13
11
|
answer(:not_logged_in)
|
@@ -19,23 +17,25 @@ end
|
|
19
17
|
|
20
18
|
__END__
|
21
19
|
---
|
22
|
-
:revision:
|
23
|
-
:plugin: 1
|
24
|
-
:summary:
|
25
|
-
en: "Log out from the bot"
|
26
20
|
:about:
|
27
21
|
:mail: "apeiros@gmx.net"
|
28
22
|
:version: "1.0.0"
|
29
23
|
:author: "Stefan Rusterholz"
|
24
|
+
:help:
|
25
|
+
en:
|
26
|
+
"": |
|
27
|
+
Using 'logout' you can log out from the bot.
|
28
|
+
Use it in order to prevent other people from abusing your account while you are not on your computer.
|
29
|
+
:revision:
|
30
|
+
:plugin: 2
|
31
|
+
:summary:
|
32
|
+
en: "Log out from the bot"
|
30
33
|
:strings:
|
31
34
|
:success:
|
32
35
|
en: "You are now logged out."
|
33
36
|
:not_logged_in:
|
34
37
|
en: "You are not logged in, can't log you out."
|
38
|
+
:trigger:
|
39
|
+
en: logout
|
35
40
|
:usage:
|
36
41
|
en: "![b]logout![o]"
|
37
|
-
:help:
|
38
|
-
en:
|
39
|
-
"": |
|
40
|
-
Using 'logout' you can log out from the bot.
|
41
|
-
Use it in order to prevent other people from abusing your account while you are not on your computer.
|