Module: Vetinari::IRC
- Included in:
- Bot
- Defined in:
- lib/vetinari/irc.rb
Instance Method Summary collapse
- #away(message = nil) ⇒ Object
- #back ⇒ Object
- #join(channel_name, key = nil) ⇒ Object
- #message(receiver, message) ⇒ Object
- #quit(message = nil) ⇒ Object
- #register ⇒ Object
- #rename(nick) ⇒ Object
Instance Method Details
#away(message = nil) ⇒ Object
47 48 49 50 51 52 53 |
# File 'lib/vetinari/irc.rb', line 47 def away( = nil) if raw "AWAY :#{}" else raw "AWAY" end end |
#back ⇒ Object
55 56 57 |
# File 'lib/vetinari/irc.rb', line 55 def back away end |
#join(channel_name, key = nil) ⇒ Object
69 70 71 72 |
# File 'lib/vetinari/irc.rb', line 69 def join(channel_name, key = nil) channel = Channel.new(channel_name, @actor) channel.join(key) end |
#message(receiver, message) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/vetinari/irc.rb', line 74 def (receiver, ) channel = @config.isupport['CHANTYPES'].any? do |chantype| receiver.start_with?(chantype) end if channel Channel.new(receiver, @actor).() else User.new(receiver, @actor).() end end |
#quit(message = nil) ⇒ Object
59 60 61 62 63 64 65 66 67 |
# File 'lib/vetinari/irc.rb', line 59 def quit( = nil) @quitted = true if raw "QUIT :#{}" else raw 'QUIT' end end |
#register ⇒ Object
3 4 5 6 7 |
# File 'lib/vetinari/irc.rb', line 3 def register raw "PASS #{@config.password}" if @config.password raw "NICK #{@config.nick}" raw "USER #{@config.username} * * :#{@config.real_name}" end |
#rename(nick) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/vetinari/irc.rb', line 9 def rename(nick) if nick.length > @config.isupport['NICKLEN'] nick = nick.slice(0, @config.isupport['NICKLEN']) end return Celluloid::Future.new { nick } if @user.nick == nick condition = Celluloid::Condition.new callbacks = Set.new callbacks << on(:nick_change) do |env| if env[:user].bot? condition.signal env[:user].nick callbacks.each { |cb| cb.remove_and_terminate if cb.alive? } end end = { 432 => :erroneous_nickname, 433 => :nickname_in_use } .each do |raw, msg| callbacks << on(raw) do |env| condition.signal(msg) callbacks.each { |cb| cb.remove_and_terminate if cb.alive? } end end after(5) do condition.signal(:timeout) callbacks.each { |cb| cb.remove_and_terminate if cb.alive? } end raw "NICK :#{nick}" Celluloid::Future.new { condition.wait } end |