Skip to content

Commit

Permalink
Merge c8d9445 into e4648b3
Browse files Browse the repository at this point in the history
  • Loading branch information
koi-chan committed Sep 26, 2019
2 parents e4648b3 + c8d9445 commit 118ea5c
Showing 1 changed file with 57 additions and 15 deletions.
72 changes: 57 additions & 15 deletions lib/rgrb/plugin/ctcp/irc_adapter.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# frozen_string_literal: true
# vim: fileencoding=utf-8

require 'rgrb/plugin_base/irc_adapter'
Expand All @@ -11,43 +12,84 @@ class IrcAdapter
include PluginBase::IrcAdapter

set(plugin_name: 'Ctcp')
ctcp(:clientinfo)
ctcp(:version)
ctcp(:time)
ctcp(:ping)
ctcp(:userinfo)
ctcp(:source)

def initialize(*args)

# 利用可能な CTCP コマンド
AVAILABLE_COMMANDS = %w(CLIENTINFO VERSION TIME PING USERINFO SOURCE)
.sort
.freeze

AVAILABLE_COMMANDS.each do |command|
ctcp(command)
end

# プラグインを初期化する
def initialize(*)
super

config_data = config[:plugin] || {}
@userinfo = config_data['UserInfo'] || 'RGRB 稼働中'
@valid_cmd = %w(CLIENTINFO VERSION TIME PING USERINFO SOURCE).sort
end

# 利用可能なコマンドを返す
# @param [Cinch::Message] m 受信したメッセージ
# @return [void]
# @see https://tools.ietf.org/id/draft-oakley-irc-ctcp-01.html#clientinfo
def ctcp_clientinfo(m)
m.ctcp_reply(@valid_cmd.join(' '))
ctcp_reply(m, AVAILABLE_COMMANDS.join(' '))
end

# バージョン情報を返す
# @param [Cinch::Message] m 受信したメッセージ
# @return [void]
# @see https://tools.ietf.org/id/draft-oakley-irc-ctcp-01.html#version
def ctcp_version(m)
m.ctcp_reply("RGRB #{RGRB::VERSION}")
ctcp_reply(m, "RGRB #{RGRB::VERSION_WITH_COMMIT_ID}")
end

# 現在のローカル時刻を返す
# @param [Cinch::Message] m 受信したメッセージ
# @return [void]
# @see https://tools.ietf.org/id/draft-oakley-irc-ctcp-01.html#time
def ctcp_time(m)
m.ctcp_reply(Time.now.strftime('%a %b %d %T %Y %Z'))
ctcp_reply(m, Time.now.strftime('%a, %d %b %Y %T %z'))
end

# クエリと同じパラメータを返す
# @param [Cinch::Message] m 受信したメッセージ
# @return [void]
# @see https://tools.ietf.org/id/draft-oakley-irc-ctcp-01.html#ping
def ctcp_ping(m)
m.ctcp_reply(m.ctcp_args.join(' '))
ctcp_reply(m, m.ctcp_args.join(' '))
end

# ユーザについての情報を返す
# @param [Cinch::Message] m 受信したメッセージ
# @return [void]
# @see https://tools.ietf.org/id/draft-oakley-irc-ctcp-01.html#userinfo
def ctcp_userinfo(m)
m.ctcp_reply(@userinfo)
ctcp_reply(m, @userinfo)
end

# RGRB のソースコードが存在する場所を返す
# @param [Cinch::Message] m 受信したメッセージ
# @return [void]
# @see https://tools.ietf.org/id/draft-oakley-irc-ctcp-01.html#source
def ctcp_source(m)
m.ctcp_reply('https://github.com/cre-ne-jp/rgrb')
ctcp_reply(m, 'https://github.com/cre-ne-jp/rgrb')
end

private

# CTCP 応答を返す
# @param [Cinch::Message] m 受信したメッセージ
# @param [String] message 送信するメッセージ
# @return [void]
def ctcp_reply(m, message)
log_incoming(m)
return if m.target.name == bot.nick

m.ctcp_reply(message)
log("<CTCP-reply to #{m.target.name}> #{message.inspect}", :outgoing, :info)
end
end
end
Expand Down

0 comments on commit 118ea5c

Please sign in to comment.