Compare commits
3 commits
Author | SHA1 | Date | |
---|---|---|---|
28cec47545 | |||
16fb535772 | |||
282c012774 |
18 changed files with 160 additions and 285 deletions
|
@ -7,6 +7,6 @@ Usage
|
||||||
-----
|
-----
|
||||||
|
|
||||||
```
|
```
|
||||||
gem install cinch marky_markov
|
gem install cinch
|
||||||
ruby tubiabot.rb
|
ruby tubiabot.rb
|
||||||
```
|
```
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
# coding: utf-8
|
|
||||||
class Amici
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
#match /lavor(o|are|atori)/
|
|
||||||
match /#{["dio","madonna"].join('|')}/
|
|
||||||
def execute(m)
|
|
||||||
users = [ "qup", "imega", "gresci", "jigen", "lgine", "encrypt", "thegamer" ]
|
|
||||||
requests = [ "oggi non ho voglia di fare un cazzo", "caffè?", "andiamo al bar?" ]
|
|
||||||
m.reply users.sample+" "+users.sample+" "+requests.sample
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,45 +0,0 @@
|
||||||
require 'net/https'
|
|
||||||
require 'cgi'
|
|
||||||
require 'uri'
|
|
||||||
|
|
||||||
class Bookmarks
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /b help$/, :method => :on_help
|
|
||||||
match /b (.*)$/
|
|
||||||
|
|
||||||
def execute(m, link)
|
|
||||||
unless link =~ URI.regexp
|
|
||||||
return
|
|
||||||
end
|
|
||||||
title = link
|
|
||||||
if open(link).read =~ /<title>(.*?)<\/title>/
|
|
||||||
title = CGI.unescapeHTML($1)
|
|
||||||
end
|
|
||||||
base_uri = "https://link.autistici.org/"
|
|
||||||
uri = URI.parse(base_uri)
|
|
||||||
client = Net::HTTP.new(uri.host, uri.port)
|
|
||||||
client.use_ssl = uri.scheme == 'https'
|
|
||||||
login_request = Net::HTTP::Post.new(uri.request_uri+"/login.php")
|
|
||||||
login_request.set_form_data({"username" => ENV["LINK_USER"], "password" => ENV["LINK_PASS"], "keeppass" => "yes", "query" => "", "submitted" => "Log+in"})
|
|
||||||
cookie = client.request(login_request).response['set-cookie'].split('; ')[0]
|
|
||||||
bookmark_request = Net::HTTP::Post.new(uri.request_uri+"/bookmarks.php/tubiabot", {
|
|
||||||
'Cookie' => cookie
|
|
||||||
})
|
|
||||||
bookmark_request.set_form_data({"title" => title,
|
|
||||||
"address" => link,
|
|
||||||
"status" => "0",
|
|
||||||
"tags" => "",
|
|
||||||
"description" => "",
|
|
||||||
"submitted" => "Add+Bookmark"})
|
|
||||||
client.request(bookmark_request)
|
|
||||||
if title != link
|
|
||||||
m.reply "Bookmark add \""+title+"\""
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def on_help(m)
|
|
||||||
m.reply "usage: !b https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
||||||
m.reply "i link stanno su https://link.autistici.org/bookmarks.php/tubiabot"
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,12 +0,0 @@
|
||||||
# coding: utf-8
|
|
||||||
class Caffe
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /caff(è|e)/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
users = [ "qup", "imega", "gresci" ]
|
|
||||||
requests = [ "andiamo al bar?", "caffè?", "bar?" ]
|
|
||||||
m.reply users.sample+": "+requests.sample
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,10 +0,0 @@
|
||||||
# coding: utf-8
|
|
||||||
class Encrypt
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /encrypt/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply ["encrypt, non vedo l'ora che arrivi il tempo del nostro prossimo incontro","soccia encrypt quanto sei troll","encrypt, sei malvagio","encrypt, guardare la nebbia","ahahah encrypt esatto","il nostro encrypt","encrypt, è il JSON marxista leninista","encrypt, magari","encrypt...","ciao encrypt","encrypt è impazzito","encrypt, se vuoi puoi parlare con me ","ma sei pazzo encrypt?","questa è per encrypt","encrypt, conosciamo la tua religione","Ciao encrypt","in particolare encrypt che usa la sua capacità per il Male "].sample
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,19 +0,0 @@
|
||||||
class Film
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /film/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
loop do
|
|
||||||
if open("http://www.imdb.com/random/title").read =~ /<title>(.*?) (\(.*?\)) - IMDb<\/title>/
|
|
||||||
title = $1.gsub(""","\"").split
|
|
||||||
if title.count > 1
|
|
||||||
#title[title.count - 1] = "Tubia"
|
|
||||||
title[rand(0...title.count)] = "Tubia"
|
|
||||||
m.reply title.join(' ')
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,10 +0,0 @@
|
||||||
class Jops
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /jops/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
cibo = ["tigelle", "crescentine"]
|
|
||||||
m.reply "jops: andiamo a mangiare le "+cibo.sample+" ?"
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,12 +0,0 @@
|
||||||
# coding: utf-8
|
|
||||||
class JS
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /js/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
frameworks = ["Angular", "React", "Ember", "Meteor"]
|
|
||||||
loves = ["è una figata", "è bellissimo"]
|
|
||||||
m.reply frameworks.sample+" "+loves.sample
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
class Qup
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /qup/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply "qup, ora ti vengo a menare"
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,61 +0,0 @@
|
||||||
require 'cgi'
|
|
||||||
|
|
||||||
class Radio
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /radio play (.*)$/, :method => :on_play
|
|
||||||
match /radio pialla/, :method => :on_pialla
|
|
||||||
match /radio help/, :method => :on_help
|
|
||||||
match /radio info/, :method => :on_info
|
|
||||||
match /radio next/, :method => :on_next
|
|
||||||
|
|
||||||
def on_play(m, link)
|
|
||||||
if link =~ /http(s):\/\/(?:www\.)?youtu(?:be\.com\/watch\?v=|\.be\/)([\w\-]+)(&(amp;)?[\w\?=]*)?/
|
|
||||||
File.open('/tmp/radio', 'w') do |f|
|
|
||||||
f.puts(link)
|
|
||||||
f.flush
|
|
||||||
end
|
|
||||||
if open(link).read =~ /<title>(.*?) - YouTube<\/title>/
|
|
||||||
m.reply "New song \""+CGI.unescapeHTML($1)+"\""
|
|
||||||
File.open('/tmp/notify-send', 'w') do |f|
|
|
||||||
f.puts($1)
|
|
||||||
f.flush
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
def on_help(m)
|
|
||||||
m.reply 'curl "http://utvghefxggihh5ts.onion/listen" | play -q - 2>/dev/null'
|
|
||||||
m.reply 'http://soyuz.labr.xyz:8000 - qua sta l\'interfaccia webbosa - poi ritorna'
|
|
||||||
m.reply 'comandi: '
|
|
||||||
m.reply ' info - ti dice la canzone che stai sentendo'
|
|
||||||
m.reply ' pialla - cancella la canzone che stai sentendo'
|
|
||||||
m.reply ' play <linkdiyoutube> - mette una canzone in playlist'
|
|
||||||
m.reply ' next - ti fa sentire un altra roba'
|
|
||||||
end
|
|
||||||
|
|
||||||
def on_pialla(m)
|
|
||||||
File.open('/tmp/notify-send', 'w') do |f|
|
|
||||||
f.puts("Sto piallando")
|
|
||||||
f.flush
|
|
||||||
end
|
|
||||||
system("mpc del $(mpc -f %position% | head -n 1)")
|
|
||||||
end
|
|
||||||
|
|
||||||
def on_info(m)
|
|
||||||
info = `mpc`.split("\n")
|
|
||||||
return if info.empty? || info.count <3
|
|
||||||
title = Base64.decode64(info[0].split('#').last).chomp
|
|
||||||
songs,time = "0"
|
|
||||||
if info[1] =~ /.* #[0-9]+\/([0-9]+)\s(.*)/
|
|
||||||
songs = $1
|
|
||||||
time = $2.strip
|
|
||||||
end
|
|
||||||
m.reply CGI.unescapeHTML(title)+" ["+time+"] "+songs+" songs in playlist"
|
|
||||||
end
|
|
||||||
|
|
||||||
def on_next(m)
|
|
||||||
`mpc next`
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
class Roll
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /roll/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply rand(1..6)
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
class Salvino
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /salvino/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply "FORZA SALVINO"+("O"*rand(3...10))
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
class Thegamer
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /thegamer/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply ["ahahahahahaha", "sistemistahahahahah", "Al centro della mia vita metto la coerenza"].sample
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,11 +0,0 @@
|
||||||
class ToniNegri
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match "toninegri"
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
@bot.nick = "toninegri"
|
|
||||||
m.reply "swasp: sono tuo padre"
|
|
||||||
@bot.nick = "TubiaBot"
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,10 +0,0 @@
|
||||||
# coding: utf-8
|
|
||||||
class Tpo
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /(P|p)olitic(a|he|i)/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply ["ahahahahahaha", "Swasps democrazia! 'Con 1589 votanti si sono concluse le primarie di CoalizioneCivica'","Swasps hashtag per tutti: LaCittàDelBuonVivere #CoalizioneCivica #Bologna LoSportDiCittadinanza tra #benessere e #integrazione", "VIGILI URBANI: UN BUON SINDACO NON DISPREZZA I PROPRI LAVORATORI - Il Sindaco di Bologna... http://fb.me/1XmvjJ2nc" ].sample
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,24 +0,0 @@
|
||||||
require 'net/https'
|
|
||||||
require 'uri'
|
|
||||||
|
|
||||||
class VCN
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match "vcn"
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
base_uri = "https://webmail.ventuordici.org/toolz/token"
|
|
||||||
uri = URI.parse(base_uri+"/generate")
|
|
||||||
Net::HTTP.start(uri.host, uri.port,
|
|
||||||
:use_ssl => uri.scheme == 'https',
|
|
||||||
:verify_mode => OpenSSL::SSL::VERIFY_NONE) do |https|
|
|
||||||
|
|
||||||
request = Net::HTTP::Post.new(uri.request_uri)
|
|
||||||
request.set_form_data({"email" => ENV["ORTICHE_MAIL"], "password" => ENV["ORTICHE_PASS"], "type" => "vcn"})
|
|
||||||
response = https.request(request)
|
|
||||||
if response.body =~ /<span id='token'>(.*?)<\/span>/
|
|
||||||
m.reply base_uri+"/check/"+$1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
|
@ -1,9 +0,0 @@
|
||||||
class Vergogna
|
|
||||||
include Cinch::Plugin
|
|
||||||
|
|
||||||
match /vergogna/
|
|
||||||
|
|
||||||
def execute(m)
|
|
||||||
m.reply "vergogna vergogna settimo reparto"
|
|
||||||
end
|
|
||||||
end
|
|
172
tubiabot.rb
172
tubiabot.rb
|
@ -3,10 +3,155 @@ require 'cinch'
|
||||||
require 'marky_markov'
|
require 'marky_markov'
|
||||||
require 'open-uri'
|
require 'open-uri'
|
||||||
|
|
||||||
plugins = [ :Caffe, :ToniNegri, :Amici, :JS, :Salvino, :Jops, :Qup, :Vergogna, :Film, :Thegamer, :Roll, :Encrypt, :Tpo, :Radio, :VCN, :Bookmarks]
|
class ToniNegri
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
plugins.each do |plugin|
|
match "toninegri"
|
||||||
require './plugins/'+plugin.downcase.to_s
|
|
||||||
|
def execute(m)
|
||||||
|
@bot.nick = "toninegri"
|
||||||
|
m.reply "swasp: sono tuo padre"
|
||||||
|
@bot.nick = "TubiaBot"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Caffe
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /caff(è|e)/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
users = [ "qup", "imega", "gresci" ]
|
||||||
|
requests = [ "andiamo al bar?", "caffè?", "bar?" ]
|
||||||
|
m.reply users.sample+": "+requests.sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Amici
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /lavor(o|are|atori)/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
users = [ "qup", "imega", "gresci", "jigen", "lgine", "encrypt", "thegamer" ]
|
||||||
|
requests = [ "oggi non ho voglia di fare un cazzo", "caffè?", "andiamo al bar?" ]
|
||||||
|
m.reply users.sample+" "+users.sample+" "+requests.sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class JS
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /js/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
frameworks = ["Angular", "React", "Ember", "Meteor"]
|
||||||
|
loves = ["è una figata", "è bellissimo"]
|
||||||
|
m.reply frameworks.sample+" "+loves.sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Salvino
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /salvino/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply "FORZA SALVINO"+("O"*rand(3...10))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Jops
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /jops/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
cibo = ["tigelle", "crescentine"]
|
||||||
|
m.reply "jops: andiamo a mangiare le "+cibo.sample+" ?"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Qup
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /qup/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply "qup, ora ti vengo a menare"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Vergogna
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /vergogna/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply "vergogna vergogna settimo reparto"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Film
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /film/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
loop do
|
||||||
|
if open("http://www.imdb.com/random/title").read =~ /<title>(.*?) (\(.*?\)) - IMDb<\/title>/
|
||||||
|
title = $1.gsub(""","\"").split
|
||||||
|
if title.count > 1
|
||||||
|
#title[title.count - 1] = "Tubia"
|
||||||
|
title[rand(0...title.count)] = "Tubia"
|
||||||
|
m.reply title.join(' ')
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Thegamer
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /thegamer/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply ["ahahahahahaha", "sistemistahahahahah"].sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Encrypt
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /encrypt/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply ["encrypt, non vedo l'ora che arrivi il tempo del nostro prossimo incontro","soccia encrypt quanto sei troll","encrypt, sei malvagio","encrypt, guardare la nebbia","ahahah encrypt esatto","il nostro encrypt","encrypt, è il JSON marxista leninista","encrypt, magari","encrypt...","ciao encrypt","encrypt è impazzito","encrypt, se vuoi puoi parlare con me ","ma sei pazzo encrypt?","questa è per encrypt","encrypt, conosciamo la tua religione","Ciao encrypt","in particolare encrypt che usa la sua capacità per il Male "].sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
class Tpo
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /(P|p)olitic(a|he|i)/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply ["ahahahahahaha", "Swasps democrazia! 'Con 1589 votanti si sono concluse le primarie di CoalizioneCivica'","Swasps hashtag per tutti: LaCittàDelBuonVivere #CoalizioneCivica #Bologna LoSportDiCittadinanza tra #benessere e #integrazione", "VIGILI URBANI: UN BUON SINDACO NON DISPREZZA I PROPRI LAVORATORI - Il Sindaco di Bologna... http://fb.me/1XmvjJ2nc" ].sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class Roll
|
||||||
|
include Cinch::Plugin
|
||||||
|
|
||||||
|
match /roll/
|
||||||
|
|
||||||
|
def execute(m)
|
||||||
|
m.reply rand(1..6)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
logger = File.open("./logs.txt", 'a+')
|
logger = File.open("./logs.txt", 'a+')
|
||||||
|
@ -15,24 +160,25 @@ markov.parse_file './logs.txt'
|
||||||
|
|
||||||
bot = Cinch::Bot.new do
|
bot = Cinch::Bot.new do
|
||||||
configure do |c|
|
configure do |c|
|
||||||
c.server = "irc.autistici.org"
|
c.server = "irc.mufhd0.net"
|
||||||
c.port = 9999
|
|
||||||
c.ssl.use = true
|
|
||||||
c.nick = "TubiaBot"
|
c.nick = "TubiaBot"
|
||||||
c.channels = ["#indivia"]
|
c.channels = ["#indivia"]
|
||||||
c.plugins.plugins = plugins.map { |p| eval(p.to_s) }
|
c.plugins.plugins = [Caffe, ToniNegri, Amici, JS, Salvino, Jops, Qup, Vergogna, Film, Thegamer, Roll, Tpo, Encrypt]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
bot.on :message do |m|
|
bot.on :message do |m|
|
||||||
nicks = [ "Tubia87", "pippo" ]
|
if m.user.nick == "Tubia87"
|
||||||
if nicks.include? m.user.nick
|
logger.write(m.message+"\n")
|
||||||
#logger.write(m.message+"\n")
|
|
||||||
end
|
end
|
||||||
if m.message.include?(@bot.nick)
|
if m.message.include?(@bot.nick)
|
||||||
rp = markov.generate_n_sentences 1
|
m.reply markov.generate_n_sentences 1
|
||||||
m.reply rp
|
end
|
||||||
#system("espeak -v italian \""+rp+"\"")
|
if m.message.include?("encrypt")
|
||||||
|
File.open('/tmp/lucine', 'w') do |f|
|
||||||
|
f.puts('blink 3 0.3')
|
||||||
|
f.flush
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue