mirror of
https://github.com/nishiki/botish.git
synced 2024-11-23 08:07:52 +00:00
first commit
This commit is contained in:
commit
7d31b828fb
3 changed files with 181 additions and 0 deletions
122
.rubocop.yml
Normal file
122
.rubocop.yml
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
|
||||||
|
AllCops:
|
||||||
|
Exclude:
|
||||||
|
- db/**/*
|
||||||
|
- config/**/*
|
||||||
|
- test/*
|
||||||
|
- Vagrantfile
|
||||||
|
TargetRubyVersion: 2.3
|
||||||
|
|
||||||
|
Style/AccessorMethodName:
|
||||||
|
Enabled: false
|
||||||
|
Style/NumericLiteralPrefix:
|
||||||
|
Enabled: false
|
||||||
|
Style/TrailingCommaInArguments:
|
||||||
|
Enabled: false
|
||||||
|
Style/TrailingCommaInLiteral:
|
||||||
|
Enabled: false
|
||||||
|
Style/FrozenStringLiteralComment:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/ParameterLists:
|
||||||
|
Max: 5
|
||||||
|
CountKeywordArgs: false
|
||||||
|
Style/MutableConstant:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/LineLength:
|
||||||
|
Max: 120
|
||||||
|
Metrics/AbcSize:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/MethodLength:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/BlockLength:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/CyclomaticComplexity:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/PerceivedComplexity:
|
||||||
|
Enabled: false
|
||||||
|
Metrics/ClassLength:
|
||||||
|
Enabled: false
|
||||||
|
Style/SpaceInsideHashLiteralBraces:
|
||||||
|
Enabled: false
|
||||||
|
Style/AsciiComments:
|
||||||
|
Enabled: true
|
||||||
|
Style/Documentation:
|
||||||
|
Enabled: false
|
||||||
|
Style/SignalException:
|
||||||
|
Enabled: false
|
||||||
|
Style/OptionHash:
|
||||||
|
Enabled: true
|
||||||
|
Style/SymbolArray:
|
||||||
|
Enabled: true
|
||||||
|
Performance/Casecmp:
|
||||||
|
Enabled: false
|
||||||
|
Style/DoubleNegation:
|
||||||
|
Enabled: false
|
||||||
|
Style/Alias:
|
||||||
|
EnforcedStyle: prefer_alias_method
|
||||||
|
Style/MultilineMethodCallIndentation:
|
||||||
|
EnforcedStyle: indented
|
||||||
|
Style/RaiseArgs:
|
||||||
|
EnforcedStyle: exploded
|
||||||
|
Style/SpaceInLambdaLiteral:
|
||||||
|
Enabled: false
|
||||||
|
Lint/UnneededSplatExpansion:
|
||||||
|
Enabled: false
|
||||||
|
|
||||||
|
|
||||||
|
# Generated configuration
|
||||||
|
Style/HashSyntax:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: ruby19
|
||||||
|
UseHashRocketsWithSymbolValues: false
|
||||||
|
Style/MethodDefParentheses:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: require_parentheses
|
||||||
|
Style/MultilineAssignmentLayout:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: new_line
|
||||||
|
Style/IndentationConsistency:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: normal
|
||||||
|
Style/AlignParameters:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: with_fixed_indentation
|
||||||
|
Style/BlockDelimiters:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: line_count_based
|
||||||
|
Style/AndOr:
|
||||||
|
Enabled: true
|
||||||
|
Style/DotPosition:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: leading
|
||||||
|
Style/EmptyLinesAroundClassBody:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: no_empty_lines
|
||||||
|
Style/EmptyLinesAroundModuleBody:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: no_empty_lines
|
||||||
|
Style/NumericPredicate:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: comparison
|
||||||
|
Style/EvenOdd:
|
||||||
|
Enabled: false
|
||||||
|
Style/CollectionMethods:
|
||||||
|
Enabled: true
|
||||||
|
PreferredMethods:
|
||||||
|
collect: map
|
||||||
|
collect!: map!
|
||||||
|
inject: reduce
|
||||||
|
detect: find
|
||||||
|
find_all: select
|
||||||
|
Style/EmptyLinesAroundAccessModifier:
|
||||||
|
Enabled: true
|
||||||
|
Style/CommandLiteral:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: percent_x
|
||||||
|
Style/StringLiterals:
|
||||||
|
Enabled: true
|
||||||
|
EnforcedStyle: single_quotes
|
||||||
|
Style/SpaceInsideBlockBraces:
|
||||||
|
EnforcedStyle: space
|
||||||
|
Style/VariableNumber:
|
||||||
|
EnforcedStyle: snake_case
|
7
bin/botish
Executable file
7
bin/botish
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/ruby
|
||||||
|
|
||||||
|
$LOAD_PATH << File.expand_path('../../lib', __FILE__)
|
||||||
|
|
||||||
|
require 'botish'
|
||||||
|
|
||||||
|
Botish.new.listen
|
52
lib/botish.rb
Normal file
52
lib/botish.rb
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/ruby
|
||||||
|
|
||||||
|
require 'socket'
|
||||||
|
|
||||||
|
class Botish
|
||||||
|
HOST = 'irc.freenode.net'
|
||||||
|
PORT = 6667
|
||||||
|
USERNAME = 'botish'
|
||||||
|
CHANNEL = '#testnishiki'
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@connection = TCPSocket.open(HOST, PORT)
|
||||||
|
|
||||||
|
send("NICK #{USERNAME}")
|
||||||
|
send("USER #{USERNAME} localhost * :#{USERNAME}")
|
||||||
|
Kernel.loop do
|
||||||
|
msg = @connection.gets
|
||||||
|
log("<- #{msg}")
|
||||||
|
break if msg.include?('End of /MOTD command.')
|
||||||
|
end
|
||||||
|
send("JOIN #{CHANNEL}")
|
||||||
|
send("PRIVMSG #{CHANNEL} :Je suis là :')")
|
||||||
|
end
|
||||||
|
|
||||||
|
def listen
|
||||||
|
Kernel.loop do
|
||||||
|
msg = @connection.gets
|
||||||
|
log("<- #{msg}")
|
||||||
|
parse(msg)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def parse(msg)
|
||||||
|
case msg
|
||||||
|
when /^PING (?<host>.+)/
|
||||||
|
send("PONG #{Regexp.last_match('host')}")
|
||||||
|
when /^:(?<user>[[:alpha:]]+)([^ ]+)? PRIVMSG #{CHANNEL} :#{USERNAME}: ping/
|
||||||
|
send("PRIVMSG #{CHANNEL} :#{Regexp.last_match('user')}: pong")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def send(msg)
|
||||||
|
log("-> #{msg}")
|
||||||
|
@connection.puts(msg)
|
||||||
|
end
|
||||||
|
|
||||||
|
def log(msg)
|
||||||
|
puts "#{Time.now.strftime('%Y-%m-%d %H:%M:%S.%L')} #{msg}"
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue