Skip to content

Commit

Permalink
Merge pull request #7 from cre-ne-jp/kickback
Browse files Browse the repository at this point in the history
Kick されたとき、ログ記録対象チャンネルだったら JOIN しなおす
ver0.1.1
  • Loading branch information
koi-chan authored Oct 7, 2016
2 parents 839700e + 4255bc8 commit 0c226c0
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 56 deletions.
3 changes: 0 additions & 3 deletions lib/ircs/config.rb
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@ class Config
# プラグイン設定のハッシュ
# @return [Hash]
attr_reader :plugin_config
# データベース設定のハッシュ
# @return [Hash]
attr_reader :database_config

class << self
# 設定 ID から設定ファイルのパスに変換する
Expand Down
51 changes: 0 additions & 51 deletions lib/ircs/database.rb

This file was deleted.

4 changes: 2 additions & 2 deletions lib/ircs/irc_bot.rb
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ def run(root_path, argv)

@logger = new_logger(log_level)
config = load_config(config_id, options[:mode])
plugins = load_plugins(%w(ChannelSync SaveLog))
plugins = load_plugins(%w(ChannelSync SaveLog KickBack))

bot = new_bot(config, plugins, log_level)

Expand Down Expand Up @@ -68,7 +68,7 @@ def parse_options(argv)

opt.on(
'-m', '--mode=RAILS_ENV',
'データベース保存環境を指定します'
'環境を指定します'
) do |mode|
options[:mode] = mode
end
Expand Down
41 changes: 41 additions & 0 deletions lib/ircs/plugins/kick_back.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# vim: fileencoding=utf-8

require_relative 'plugin_template'

module LogArchiver
module Plugin
# KICK されたとき、ログ取得対象チャンネルだった場合 JOIN しなおす
class KickBack < Template
include Cinch::Plugin

set(plugin_name: 'KickBack')

listen_to(:kick, method: :kick)

JOIN_MESSAGE =
"このチャンネル( %s )はログ記録対象に設定されています。" \
"退出するとログの記録ができないため、再入室しました。" \
"退出させる前に、ログの記録を停止させてください。\n" \
"次の文字列を行頭から発言するとヘルプを表示します: .log-help"

# 自分が KICK されたら自動的にそのチャンネルに戻る
# @param [Cinch::Message] m 送信されたメッセージ
# @return [void]
def kick(m)
logging_enabled =
::Channel.logging_enabled_names_with_prefix(lowercase: true)

if m.params[1].downcase == bot.nick.downcase \
&& logging_enabled.include?(m.channel)
bot.join(m.channel)
@logger.warn("#{m.channel} から KICK されたため、JOIN し直しました")
sleep 1
(JOIN_MESSAGE % m.channel.to_s).each_line do |line|
m.target.send(line, true)
@logger.warn("<#{m.channel}>: #{line}")
end
end
end
end
end
end

0 comments on commit 0c226c0

Please sign in to comment.