cakewalk 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (99) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +1 -0
  3. data/LICENSE +22 -0
  4. data/README.md +169 -0
  5. data/docs/bot_options.md +454 -0
  6. data/docs/changes.md +541 -0
  7. data/docs/common_mistakes.md +60 -0
  8. data/docs/common_tasks.md +57 -0
  9. data/docs/encodings.md +69 -0
  10. data/docs/events.md +273 -0
  11. data/docs/getting_started.md +184 -0
  12. data/docs/logging.md +90 -0
  13. data/docs/migrating.md +267 -0
  14. data/docs/plugins.md +4 -0
  15. data/docs/readme.md +20 -0
  16. data/examples/basic/autovoice.rb +32 -0
  17. data/examples/basic/google.rb +35 -0
  18. data/examples/basic/hello.rb +15 -0
  19. data/examples/basic/join_part.rb +34 -0
  20. data/examples/basic/memo.rb +39 -0
  21. data/examples/basic/msg.rb +16 -0
  22. data/examples/basic/seen.rb +36 -0
  23. data/examples/basic/urban_dict.rb +35 -0
  24. data/examples/basic/url_shorten.rb +35 -0
  25. data/examples/plugins/autovoice.rb +37 -0
  26. data/examples/plugins/custom_prefix.rb +23 -0
  27. data/examples/plugins/dice_roll.rb +38 -0
  28. data/examples/plugins/google.rb +36 -0
  29. data/examples/plugins/hello.rb +22 -0
  30. data/examples/plugins/hooks.rb +36 -0
  31. data/examples/plugins/join_part.rb +42 -0
  32. data/examples/plugins/lambdas.rb +35 -0
  33. data/examples/plugins/last_nick.rb +24 -0
  34. data/examples/plugins/msg.rb +22 -0
  35. data/examples/plugins/multiple_matches.rb +32 -0
  36. data/examples/plugins/own_events.rb +37 -0
  37. data/examples/plugins/seen.rb +45 -0
  38. data/examples/plugins/timer.rb +22 -0
  39. data/examples/plugins/url_shorten.rb +33 -0
  40. data/lib/cakewalk/ban.rb +50 -0
  41. data/lib/cakewalk/bot.rb +479 -0
  42. data/lib/cakewalk/cached_list.rb +19 -0
  43. data/lib/cakewalk/callback.rb +20 -0
  44. data/lib/cakewalk/channel.rb +463 -0
  45. data/lib/cakewalk/channel_list.rb +29 -0
  46. data/lib/cakewalk/configuration/bot.rb +48 -0
  47. data/lib/cakewalk/configuration/dcc.rb +16 -0
  48. data/lib/cakewalk/configuration/plugins.rb +41 -0
  49. data/lib/cakewalk/configuration/sasl.rb +19 -0
  50. data/lib/cakewalk/configuration/ssl.rb +19 -0
  51. data/lib/cakewalk/configuration/timeouts.rb +14 -0
  52. data/lib/cakewalk/configuration.rb +73 -0
  53. data/lib/cakewalk/constants.rb +533 -0
  54. data/lib/cakewalk/dcc/dccable_object.rb +37 -0
  55. data/lib/cakewalk/dcc/incoming/send.rb +147 -0
  56. data/lib/cakewalk/dcc/incoming.rb +1 -0
  57. data/lib/cakewalk/dcc/outgoing/send.rb +122 -0
  58. data/lib/cakewalk/dcc/outgoing.rb +1 -0
  59. data/lib/cakewalk/dcc.rb +12 -0
  60. data/lib/cakewalk/exceptions.rb +46 -0
  61. data/lib/cakewalk/formatting.rb +125 -0
  62. data/lib/cakewalk/handler.rb +118 -0
  63. data/lib/cakewalk/handler_list.rb +90 -0
  64. data/lib/cakewalk/helpers.rb +231 -0
  65. data/lib/cakewalk/irc.rb +913 -0
  66. data/lib/cakewalk/isupport.rb +98 -0
  67. data/lib/cakewalk/log_filter.rb +21 -0
  68. data/lib/cakewalk/logger/formatted_logger.rb +97 -0
  69. data/lib/cakewalk/logger/zcbot_logger.rb +22 -0
  70. data/lib/cakewalk/logger.rb +168 -0
  71. data/lib/cakewalk/logger_list.rb +85 -0
  72. data/lib/cakewalk/mask.rb +69 -0
  73. data/lib/cakewalk/message.rb +391 -0
  74. data/lib/cakewalk/message_queue.rb +107 -0
  75. data/lib/cakewalk/mode_parser.rb +76 -0
  76. data/lib/cakewalk/network.rb +89 -0
  77. data/lib/cakewalk/open_ended_queue.rb +26 -0
  78. data/lib/cakewalk/pattern.rb +65 -0
  79. data/lib/cakewalk/plugin.rb +515 -0
  80. data/lib/cakewalk/plugin_list.rb +38 -0
  81. data/lib/cakewalk/rubyext/float.rb +3 -0
  82. data/lib/cakewalk/rubyext/module.rb +26 -0
  83. data/lib/cakewalk/rubyext/string.rb +33 -0
  84. data/lib/cakewalk/sasl/dh_blowfish.rb +71 -0
  85. data/lib/cakewalk/sasl/diffie_hellman.rb +47 -0
  86. data/lib/cakewalk/sasl/mechanism.rb +6 -0
  87. data/lib/cakewalk/sasl/plain.rb +26 -0
  88. data/lib/cakewalk/sasl.rb +34 -0
  89. data/lib/cakewalk/syncable.rb +83 -0
  90. data/lib/cakewalk/target.rb +199 -0
  91. data/lib/cakewalk/timer.rb +145 -0
  92. data/lib/cakewalk/user.rb +488 -0
  93. data/lib/cakewalk/user_list.rb +87 -0
  94. data/lib/cakewalk/utilities/deprecation.rb +16 -0
  95. data/lib/cakewalk/utilities/encoding.rb +37 -0
  96. data/lib/cakewalk/utilities/kernel.rb +13 -0
  97. data/lib/cakewalk/version.rb +4 -0
  98. data/lib/cakewalk.rb +5 -0
  99. metadata +140 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7d80b397852e16785d686f599bbe07e8abd304a48d120c54c2faf6a685439084
4
+ data.tar.gz: 1f66b25d408532dd5510c6b0f876f19aabc1da9c4ea30ffda3879c2d1fd0a552
5
+ SHA512:
6
+ metadata.gz: 2dbb18d3cba0ea8b5361f23565c21fc4420cd3f837f9945330e57c846f07908b0fa1dedac9beb012e0c300991c465772c51cb6904423fe2dd86cf86faae10726
7
+ data.tar.gz: 8dfdbdf6c6a0045435248e2cbff36e3e8b8f859e9888c8da22ea7c97df3cf270553da208fcf45053b6c88f778d3a3da921d6f28880e5f56b87887a5b567aebf1
data/.yardopts ADDED
@@ -0,0 +1 @@
1
+ --hide-void-return -m kramdown --verbose --no-private --asset docs/images:images --readme docs/readme.md --plugin kramdown - docs/**/*.md
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2010 Lee Jarvis, Dominik Honnef
2
+ Copyright (c) 2011 Dominik Honnef
3
+ Copyright (c) 2021 Petru Madar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,169 @@
1
+ Cakewalk - The IRC Bot Building Framework
2
+ =====================================
3
+
4
+ Cakewalk is an attempt at reviving a retired IRC bot building framework called **cinch**.
5
+ While the codebase seems to be working just fine with Ruby versions up to 2.7.x, our main
6
+ focus is Ruby 3.x.
7
+
8
+ Description
9
+ -----------
10
+
11
+ Cakewalk is an IRC bot building framework for quickly creating IRC bots in
12
+ Ruby with minimal effort. It provides a simple interface based on plugins and
13
+ rules. It's as easy as creating a plugin, defining a rule, and watching your
14
+ profits flourish.
15
+
16
+ Cakewalk will do all of the hard work for you, so you can spend time creating cool
17
+ plugins and extensions to wow your internet peers.
18
+
19
+ For general support, join #cakewalk channel on the Libera.chat network.
20
+
21
+ Installation
22
+ ------------
23
+
24
+ ### RubyGems
25
+
26
+ You can install the latest Cakewalk gem using RubyGems
27
+
28
+ ```
29
+ gem install cakewalk
30
+ ```
31
+
32
+ ### GitHub
33
+
34
+ Alternatively you can check out the latest code directly from Github
35
+
36
+ ```
37
+ git clone https://github.com/petru/cakewalk.git
38
+ ```
39
+
40
+ Example
41
+ -------
42
+
43
+ Your typical Hello, World application in Cakewalk would go something like this:
44
+
45
+ ```ruby
46
+ require 'cakewalk'
47
+
48
+ bot = Cakewalk::Bot.new do
49
+ configure do |c|
50
+ c.server = "irc.libera.chat"
51
+ c.channels = ["#cakewalk-bots"]
52
+ end
53
+
54
+ on :message, "hello" do |m|
55
+ m.reply "Hello, #{m.user.nick}"
56
+ end
57
+ end
58
+
59
+ bot.start
60
+ ```
61
+
62
+ More examples can be found in the `examples` directory.
63
+
64
+ Features
65
+ --------
66
+
67
+ ### Documentation
68
+
69
+ Cakewalk provides a documented API, which is online for your viewing pleasure
70
+ [here](http://rubydoc.info/gems/cakewalk/frames).
71
+
72
+ ### Object Oriented
73
+
74
+ Many IRC bots (and there are, **so** many) are great, but we see so little of
75
+ them take advantage of the awesome Object Oriented Interface which most Ruby
76
+ programmers will have become accustomed to and grown to love.
77
+
78
+ Well, Cakewalk uses this functionality to its advantage. Rather than having to
79
+ pass around a reference to a channel or a user, to another method, which then
80
+ passes it to another method (by which time you're confused about what's
81
+ going on) -- Cakewalk provides an OOP interface for even the simpliest of tasks,
82
+ making your code simple and easy to comprehend.
83
+
84
+ ### Threaded
85
+
86
+ Unlike a lot of popular IRC frameworks, Cakewalk is threaded. But wait, don't let
87
+ that scare you. It's totally easy to grasp.
88
+
89
+ Each of Cakewalk's plugins and handlers are executed in their own personal thread.
90
+ This means the main thread can stay focused on what it does best, providing
91
+ non-blocking reading and writing to an IRC server. This will prevent your bot
92
+ from locking up when one of your plugins starts doing some intense operations.
93
+ Damn that's handy.
94
+
95
+ ### Plugins
96
+
97
+ That's right folks, Cakewalk provides a modular based plugin system. This is a
98
+ feature many people have bugged us about for a long time. It's finally here,
99
+ and it's as awesome as you had hoped!
100
+
101
+ This system allows you to create feature packed plugins without interfering with
102
+ any of the Cakewalk internals. Everything in your plugin is self contained, meaning
103
+ you can share your favorite plugins among your friends and release a ton of
104
+ your own plugins for others to use
105
+
106
+ Want to see the same Hello, World application in plugin form? Sure you do!
107
+
108
+ ```ruby
109
+ require 'cakewalk'
110
+
111
+ class Hello
112
+ include Cakewalk::Plugin
113
+
114
+ match "hello"
115
+
116
+ def execute(m)
117
+ m.reply "Hello, #{m.user.nick}"
118
+ end
119
+ end
120
+
121
+ bot = Cakewalk::Bot.new do
122
+ configure do |c|
123
+ c.server = "irc.libera.chat"
124
+ c.channels = ["#cakewalk-bots"]
125
+ c.plugins.plugins = [Hello]
126
+ end
127
+ end
128
+
129
+ bot.start
130
+ ```
131
+
132
+ Note: Plugins take a default prefix of `/^!/` which means the actual match is `!hello`.
133
+
134
+ More information can be found in the {Cakewalk::Plugin} documentation.
135
+
136
+ ### Numeric Replies
137
+
138
+ Do you know what IRC code 401 represents? How about 376? or perhaps 502?
139
+ Sure you don't (and if you do, you're as geeky as us!). Cakewalk doesn't expect you
140
+ to store the entire IRC RFC code set in your head, and rightfully so!
141
+
142
+ That's exactly why Cakewalk has a ton of constants representing these numbers
143
+ so you don't have to remember them. We're so nice.
144
+
145
+ ### Pretty Output
146
+
147
+ Ever get fed up of watching those boring, frankly unreadable lines
148
+ flicker down your terminal screen whilst your bot is online? Help is
149
+ at hand! By default, Cakewalk will colorize all text it sends to a
150
+ terminal, meaning you get some pretty damn awesome readable coloured
151
+ text. Cakewalk also provides a way for your plugins to log custom
152
+ messages:
153
+
154
+ ```ruby
155
+ on :message, /hello/ do |m|
156
+ debug "Someone said hello"
157
+ end
158
+ ```
159
+
160
+ Contribute
161
+ ----------
162
+
163
+ Love Cakewalk? Love Ruby? Love helping? Of course you do! If you feel like Cakewalk
164
+ is missing that awesome jaw-dropping feature and you want to be the one to
165
+ make this magic happen, you can!
166
+
167
+ Fork the project, implement your awesome feature in its own branch, and send
168
+ a pull request to one of the Cakewalk collaborators. We'll be more than happy
169
+ to check it out.
@@ -0,0 +1,454 @@
1
+ # @title Bot options
2
+ # @markup kramdown
3
+
4
+ # Options
5
+
6
+ ## channels
7
+ Type
8
+ : Array<String>
9
+
10
+ Default value
11
+ : `[]`
12
+
13
+ Description
14
+ : Channels in this list will be joined upon connecting.
15
+
16
+
17
+ ### Notes
18
+ - To automatically join password-protected channels, just append the
19
+ password to the channel's name, separated by a space, e.g.
20
+ `"#mychannel mypassword"`.
21
+
22
+ ## dcc
23
+
24
+ ### dcc.own_ip
25
+ Type
26
+ : String
27
+
28
+ Default value
29
+ : `nil`
30
+
31
+ Description
32
+ : The external IP which should be used for outgoing DCC SENDs. For
33
+ more information see {Cakewalk::DCC::Outgoing::Send}.
34
+
35
+ ## delay_joins
36
+ Type
37
+ : Number, Symbol
38
+
39
+ Default value
40
+ : `0`
41
+
42
+ Description
43
+ : Delay joining channels N seconds after connecting, or until the event S fires.
44
+
45
+ ### Notes
46
+ - This is especially useful in combination with the /cakewalk-identify/ plugin, which will trigger the `:identified` event.
47
+
48
+ ## encoding
49
+ Type
50
+ : String, Encoding
51
+
52
+ Default value
53
+ : `:irc`
54
+
55
+ Description
56
+ : This determines which encoding text received from IRC will have.
57
+
58
+
59
+ ### Notes
60
+ - {file:docs/encodings.md More information on how Cakewalk handles encoding issues}
61
+
62
+ ## local_host
63
+ Type
64
+ : String
65
+
66
+ Default value
67
+ : `nil`
68
+
69
+ Description
70
+ : Which IP/host to bind to when connecting. This is useful for using
71
+ so called "vhosts".
72
+
73
+ ## max_messages
74
+ Type
75
+ : Fixnum
76
+
77
+ Default value
78
+ : `nil`
79
+
80
+ Description
81
+ : When an overlong message gets split, only `max_messages` parts will
82
+ be sent to the recipient.
83
+
84
+
85
+ ### Notes
86
+ - Set this option to `nil` to disable any limit.
87
+
88
+ ## max_reconnect_delay
89
+ Type
90
+ : Fixnum
91
+
92
+ Default value
93
+ : `300`
94
+
95
+ Descriptipn
96
+ : With every unsuccessful reconnection attempt, Cakewalk increases the
97
+ delay between new attempts. This setting is the maximum number of
98
+ seconds to wait between two attempts.
99
+
100
+ ## messages_per_second
101
+ Type
102
+ : Float
103
+
104
+ Default value
105
+ : Network dependent
106
+
107
+ Description
108
+ : How many incoming messages the server processes per second. This is
109
+ used for throttling.
110
+
111
+
112
+ ### Notes
113
+ - If your bot gets kicked for excess flood, try lowering the value of
114
+ `messages_per_second`.
115
+ - See also: {file:docs/bot_options.md#serverqueuesize `server_queue_size`}
116
+
117
+ ## message_split_end
118
+ Type
119
+ : String
120
+
121
+ Default value
122
+ : `" ..."`
123
+
124
+ Description
125
+ : When a message is too long to be sent as a whole, it will be split
126
+ and the value of this option will be appended to all but the last
127
+ parts of the message.
128
+
129
+
130
+ ## message_split_start
131
+ Type
132
+ : String
133
+
134
+ Default value
135
+ : `"... "`
136
+
137
+ Description
138
+ : When a message is too long to be sent as a whole, it will be split
139
+ and the value of this option will be prepended to all but the first
140
+ parts of the message.
141
+
142
+ ## modes
143
+ Type
144
+ : Array<String>
145
+
146
+ Default value
147
+ : []
148
+
149
+ Description
150
+ : An array of modes the bot should set on itself after connecting.
151
+
152
+ ## nick
153
+ Type
154
+ : String
155
+
156
+ Default value
157
+ : `"cakewalk"`
158
+
159
+ Description
160
+ : The nickname the bot will use.
161
+
162
+
163
+ ### Notes
164
+ - If the nickname is in use, Cakewalk will append underscores until it
165
+ finds a free nick.
166
+ - You really should set this option instead of using the default.
167
+
168
+ ## nicks
169
+ Type
170
+ : Array<String>
171
+
172
+ Default value
173
+ : `nil`
174
+
175
+ Description
176
+ : This option overrules {file:docs/bot_options.md#nick `nick`} and allows Cakewalk
177
+ to try multiple nicks before adding underscores.
178
+
179
+
180
+ ## password
181
+ Type
182
+ : String
183
+
184
+ Default value
185
+ : `nil`
186
+
187
+ Description
188
+ : A server password for access to private servers.
189
+
190
+
191
+ ### Notes
192
+ - Some networks allow you to use the server password for
193
+ authenticating with services (e.g. NickServ).
194
+
195
+
196
+ ## ping_interval
197
+ Type
198
+ : Number
199
+
200
+ Default value
201
+ : `120`
202
+
203
+ Description
204
+ : The server will be pinged every X seconds, to keep the connection
205
+ alive.
206
+
207
+
208
+ ### Notes
209
+ - The ping interval should be smaller than
210
+ {file:docs/bot_options.md#timeoutsread `timeouts.read`} to prevent Cakewalk from
211
+ falsely declaring a connection dead.
212
+
213
+
214
+ ## plugins
215
+
216
+ ### plugins.plugins
217
+ Type
218
+ : Array<Class>
219
+
220
+ Default value
221
+ : `[]`
222
+
223
+ Description
224
+ : A list of plugins to register.
225
+
226
+
227
+ #### Notes
228
+ - An example: `[Plugin1, Plugin2, Plugin3]` -- Note that we are adding
229
+ the plugin **classes** to the list.
230
+
231
+ ### plugins.prefix
232
+ Type
233
+ : String, Regexp, Lambda
234
+
235
+ Default value
236
+ : `/^!/`
237
+
238
+ Description
239
+ : A prefix that will be prepended to all plugin commands.
240
+
241
+
242
+ ### plugins.suffix
243
+ Type
244
+ : String, Regexp, Lambda
245
+
246
+ Default value
247
+ : `nil`
248
+
249
+ Description
250
+ : A suffix that will be appended to all plugin commands.
251
+
252
+
253
+
254
+ ### plugins.options
255
+ Type
256
+ : Hash
257
+
258
+ Default value
259
+ : `Hash.new {|h,k| h[k] = {}}`
260
+
261
+ Description
262
+ : Options specific to plugins.
263
+
264
+
265
+ #### Notes
266
+ - Information on plugins and options for those will be made available
267
+ in a separate document soon.
268
+
269
+
270
+ ## port
271
+ Type
272
+ : Fixnum
273
+
274
+ Default value
275
+ : `6667`
276
+
277
+ Description
278
+ : The port the IRC server is listening on
279
+
280
+
281
+ ## realname
282
+ Type
283
+ : String
284
+
285
+ Default value
286
+ : `"cakewalk"`
287
+
288
+ Description
289
+ : The real name Cakewalk will connect with.
290
+
291
+ ## reconnect
292
+ Type
293
+ : Boolean
294
+
295
+ Default value
296
+ : `true`
297
+
298
+ Description
299
+ : Should Cakewalk attempt to reconnect after a connection loss?
300
+
301
+ ## sasl
302
+
303
+ ### sasl.username
304
+ Type
305
+ : String
306
+
307
+ Default value
308
+ : `nil`
309
+
310
+ Description
311
+ : The username to use for SASL authentication.
312
+
313
+ ### sasl.password
314
+ Type
315
+ : String
316
+
317
+ Default value
318
+ : `nil`
319
+
320
+ Description
321
+ : The password to use for SASL authentication.
322
+
323
+ ### sasl.mechanisms
324
+ Type
325
+ : Array<Cakewalk::SASL::Mechanism>
326
+
327
+ Default value
328
+ : `[Cakewalk::SASL::DH_Blowfish, Cakewalk::SASL::Plain]`
329
+
330
+ Description
331
+ : The SASL mechanisms to use. All mechanisms in the array will be
332
+ attempted, until one was successful
333
+
334
+ ## server
335
+ Type
336
+ : String
337
+
338
+ Default value
339
+ : `"localhost"`
340
+
341
+ Description
342
+ : The IRC server to connect to
343
+
344
+
345
+ ## server_queue_size
346
+ Type
347
+ : Fixnum
348
+
349
+ Default value
350
+ : Network dependent
351
+
352
+ Description
353
+ : The number of incoming messages the server will queue, before
354
+ killing the bot for excess flood.
355
+
356
+
357
+ ### Notes
358
+ - If your bot gets kicked for excess flood, try lowering the value of
359
+ `server_queue_size`.
360
+ - See also: {file:docs/bot_options.md#messagespersecond `messages_per_second`}
361
+
362
+ ## ssl
363
+
364
+ ### ssl.use
365
+ Type
366
+ : Boolean
367
+
368
+ Default value
369
+ : `false`
370
+
371
+ Description
372
+ : Sets if SSL should be used
373
+
374
+ ### ssl.verify
375
+ Type
376
+ : Boolean
377
+
378
+ Default value
379
+ : `false`
380
+
381
+ Description
382
+ : Sets if the SSL certificate should be verified
383
+
384
+
385
+ ### ssl.ca_path
386
+ Type
387
+ : String
388
+
389
+ Default value
390
+ : `"/etc/ssl/certs"`
391
+
392
+ Description
393
+ : The path to a directory with certificates. This has to be set
394
+ properly for {file:docs/bot_options.md#sslverify `ssl.verify`} to work.
395
+
396
+
397
+ ### ssl.client_cert
398
+ Type
399
+ : String
400
+
401
+ Default value
402
+ : `nil`
403
+
404
+ Description
405
+ : The path to a client certificate, which some networks can use for
406
+ authentication (see {http://www.oftc.net/oftc/NickServ/CertFP})
407
+
408
+
409
+ #### Notes
410
+ - You will want to set the correct port when using SSL
411
+
412
+ ## user
413
+ Type
414
+ : String
415
+
416
+ Default value
417
+ : `"cakewalk"`
418
+
419
+ Description
420
+ : The user name to use when connecting to the IRC server.
421
+
422
+ ## timeouts
423
+
424
+ ### timeouts.read
425
+ Type
426
+ : Number
427
+
428
+ Default value
429
+ : `240`
430
+
431
+ Description
432
+ : If no data has been received for this amount of seconds, the
433
+ connection will be considered dead.
434
+
435
+
436
+ ### timeouts.connect
437
+ Type
438
+ : Number
439
+
440
+ Default value
441
+ : `10`
442
+
443
+ Description
444
+ : Give up connecting after this amount of seconds.
445
+
446
+ ## default_logger_level
447
+ Type
448
+ : Symbol
449
+
450
+ Default value
451
+ : `:debug`
452
+
453
+ Description
454
+ : Modify the log level of the default logger, for instance, the bot will log very little if you set this value to `:fatal`.