initial commit
This commit is contained in:
commit
3370e78c50
33
cat_facts/bot.rb
Normal file
33
cat_facts/bot.rb
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
require 'cinch'
|
||||||
|
|
||||||
|
|
||||||
|
file = File.open "cat_facts.html", "r"
|
||||||
|
a = file.read.split "<li"
|
||||||
|
l = a.collect do |s|
|
||||||
|
if s.include? "id"
|
||||||
|
s.slice s.index("id"), s.index("<sub>")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
l.delete_at 0
|
||||||
|
done = l.collect do |s|
|
||||||
|
if s.include? "id"
|
||||||
|
s.slice( s.index(">") + 1 .. s.index("<") - 1 )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
bot = Cinch::Bot.new do
|
||||||
|
configure do |c|
|
||||||
|
c.nick = 'CatFacts^'
|
||||||
|
c.server = 'server'
|
||||||
|
c.port = port
|
||||||
|
c.channels = ['#bot-test']
|
||||||
|
c.ssl.use = true
|
||||||
|
end
|
||||||
|
|
||||||
|
on :message, /(?i)(.*).*cat.*/ do |m|
|
||||||
|
m.reply done.sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
bot.start
|
2
cat_facts/cat_facts.txt
Normal file
2
cat_facts/cat_facts.txt
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
Unlike dogs, cats do not have a sweet tooth. Scientists believe this is due to a mutation in a key taste receptor#
|
||||||
|
When a cat chases its prey, it keeps its head level. Dogs and humans bob their heads up and down#
|
33
coin_flip_bot/flip-a-coin.rb
Normal file
33
coin_flip_bot/flip-a-coin.rb
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# coding: utf-8
|
||||||
|
require 'cinch'
|
||||||
|
|
||||||
|
bot = Cinch::Bot.new do
|
||||||
|
configure do |c|
|
||||||
|
c.nick = 'MrRollBot'
|
||||||
|
c.server = 'irc.guava.space'
|
||||||
|
c.port = 6697
|
||||||
|
c.channels = ['#bot-test', '#chat']
|
||||||
|
c.ssl.use = true
|
||||||
|
end
|
||||||
|
|
||||||
|
on :message, /^!roll/ do |m|
|
||||||
|
random_int = rand(0..100).to_s
|
||||||
|
m.params[1].match /^!roll ([0-9]*)-([0-9]*)/ do |numbers|
|
||||||
|
if not numbers[1].nil? then
|
||||||
|
random_int = rand(numbers[1].to_i..numbers[2].to_i).to_s
|
||||||
|
end
|
||||||
|
end
|
||||||
|
m.reply random_int
|
||||||
|
end
|
||||||
|
|
||||||
|
on :message, /!coin/ do |m|
|
||||||
|
probs = rand(1..10).to_i
|
||||||
|
if probs < 5 then
|
||||||
|
m.reply "Heads"
|
||||||
|
else
|
||||||
|
m.reply "Tails"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
bot.start
|
22
table_bot/put_table_back.rb
Normal file
22
table_bot/put_table_back.rb
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# coding: utf-8
|
||||||
|
require 'cinch'
|
||||||
|
|
||||||
|
bot = Cinch::Bot.new do
|
||||||
|
configure do |c|
|
||||||
|
c.nick = 'GoodTable'
|
||||||
|
c.server = 'irc.guava.space'
|
||||||
|
c.port = 6697
|
||||||
|
c.channels = ['#bot-test']
|
||||||
|
c.ssl.use = true
|
||||||
|
end
|
||||||
|
|
||||||
|
on :message, '(╯°□°)╯︵ ┻━┻' do |m|
|
||||||
|
m.reply '┯━┯ノ(º₋ºノ) plz be kind to table'
|
||||||
|
end
|
||||||
|
|
||||||
|
on :message, 'ಠ_ಠ' do |m|
|
||||||
|
m.reply '( ͡° ͜ʖ ͡°)'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
bot.start
|
36
taylor_bot/DictionaryGenerator.rb
Normal file
36
taylor_bot/DictionaryGenerator.rb
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
class DictionaryGenerator
|
||||||
|
attr_reader :dictionary, :depth
|
||||||
|
|
||||||
|
def initialize( depth )
|
||||||
|
@dictionary = {}
|
||||||
|
@capitalized_words = []
|
||||||
|
@depth = depth
|
||||||
|
@split_words = /(\.\s+)|(\.$)|([?!])|[\s]+/
|
||||||
|
@split_sentence = /(?<=[.!?])\s+/
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_word_to_dict( keyword, followedby )
|
||||||
|
@dictionary[keyword] ||= []
|
||||||
|
@dictionary[keyword] << followedby
|
||||||
|
end
|
||||||
|
|
||||||
|
def insert_text( text )
|
||||||
|
input_sentences = text.split @split_sentence
|
||||||
|
|
||||||
|
if input_sentences.empty? then raise "insert_text called without input" end
|
||||||
|
|
||||||
|
unless input_sentences[-1].strip[-1].match /[.!?]/ then
|
||||||
|
input_sentences[-1] = input_sentences[-1].strip + '.'
|
||||||
|
end
|
||||||
|
|
||||||
|
input_sentences.each do |sentence|
|
||||||
|
|
||||||
|
sentence.split(@split_words).each_cons(@depth + 1) do |words|
|
||||||
|
words = words.collect { |s| s.gsub(/["()]/, "") }
|
||||||
|
self.add_word_to_dict words[0..-2], words[-1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
50
taylor_bot/SentenceGenerator.rb
Normal file
50
taylor_bot/SentenceGenerator.rb
Normal file
|
@ -0,0 +1,50 @@
|
||||||
|
class NullObject
|
||||||
|
def method_missing (*args, &block)
|
||||||
|
self
|
||||||
|
end
|
||||||
|
def nil?; true; end
|
||||||
|
def to_str; end
|
||||||
|
def to_ary; []; end
|
||||||
|
end
|
||||||
|
|
||||||
|
NULL_OBJECT = NullObject.new
|
||||||
|
|
||||||
|
class SentenceGenerator
|
||||||
|
|
||||||
|
def initialize(dictionary)
|
||||||
|
@dictionary = dictionary
|
||||||
|
@depth = @dictionary.depth
|
||||||
|
end
|
||||||
|
|
||||||
|
def random_word(last_word)
|
||||||
|
@dictionary.dictionary.fetch(last_word, NULL_OBJECT).sample
|
||||||
|
end
|
||||||
|
|
||||||
|
def is_terminator?(symbol)
|
||||||
|
(symbol =~ /[!?]/ || symbol == '.')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
# Ugly way of making sure the key starts with a capital letter
|
||||||
|
def random_capitalized_word
|
||||||
|
random_choice = ["temp"]
|
||||||
|
until random_choice[0] =~ /[A-Z]/
|
||||||
|
words = @dictionary.dictionary.keys
|
||||||
|
random_choice = words[rand(words.length)]
|
||||||
|
end
|
||||||
|
random_choice
|
||||||
|
end
|
||||||
|
|
||||||
|
def generate_sentence()
|
||||||
|
sentence = []
|
||||||
|
maximum_length = 30
|
||||||
|
wordcount = 0
|
||||||
|
sentence.concat(random_capitalized_word)
|
||||||
|
until (is_terminator?(sentence.last[-1])) || wordcount > maximum_length
|
||||||
|
wordcount += 1
|
||||||
|
word = random_word(sentence.last(@depth))
|
||||||
|
sentence << word
|
||||||
|
end
|
||||||
|
sentence.join(' ')
|
||||||
|
end
|
||||||
|
end
|
39
taylor_bot/taylor_bot.rb
Normal file
39
taylor_bot/taylor_bot.rb
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
require 'cinch'
|
||||||
|
require_relative 'DictionaryGenerator'
|
||||||
|
require_relative 'SentenceGenerator'
|
||||||
|
require_relative 'config'
|
||||||
|
|
||||||
|
|
||||||
|
love_file = File.open("love_story.txt","r").read
|
||||||
|
our_file = File.open("our_song.txt","r").read
|
||||||
|
shouldve_file = File.open('shouldve_said_no.txt','r').read
|
||||||
|
|
||||||
|
text = love_file + our_file + shouldve_file
|
||||||
|
|
||||||
|
@dictionary = DictionaryGenerator.new(2)
|
||||||
|
@dictionary.insert_text text
|
||||||
|
|
||||||
|
sentenceGen = SentenceGenerator.new(@dictionary)
|
||||||
|
puts "-------------------------------------"
|
||||||
|
puts sentenceGen.generate_sentence
|
||||||
|
puts "-------------------------------------"
|
||||||
|
|
||||||
|
|
||||||
|
bot = Cinch::Bot.new do
|
||||||
|
configure do |c|
|
||||||
|
c.nick = 'TaylorSwift'
|
||||||
|
c.server = SERVER_ADDRESS
|
||||||
|
c.port = PORT
|
||||||
|
c.channels = CHANNELS
|
||||||
|
c.ssl.use = true
|
||||||
|
end
|
||||||
|
|
||||||
|
on :message, /.*(?i)(.).*taylor.*/ do |m|
|
||||||
|
to_reply = sentenceGen.generate_sentence
|
||||||
|
sec_to_sleep = to_reply.size * 0.01+1
|
||||||
|
sleep(sec_to_sleep)
|
||||||
|
m.reply to_reply
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
bot.start
|
Loading…
Reference in New Issue
Block a user