Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
S
Sam
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Wiki externe
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Déploiement
Releases
Registre de modèles
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Alexandre MORIGNOT
Sam
Validations
fdbbd83e
Valider
fdbbd83e
rédigé
Il y a 11 ans
par
Alexandre Morignot
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Nouveau module « Sam ».
parent
c4ed04c7
Branches
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Modifications
3
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
Sam.pl
+2
-157
2 ajouts, 157 suppressions
Sam.pl
lib/Sam.pm
+171
-0
171 ajouts, 0 suppression
lib/Sam.pm
lib/commands/parser.pm
+1
-0
1 ajout, 0 suppression
lib/commands/parser.pm
avec
174 ajouts
et
157 suppressions
Sam.pl
+
2
−
157
Voir le fichier @
fdbbd83e
...
...
@@ -2,165 +2,10 @@
use
strict
;
use
warnings
;
use
POE
;
use
POE::Component::
IRC
;
use
DBI
;
use
JSON
;
use
Module::
Reload
;
use
FindBin
;
use
lib
"
$FindBin
::Bin/lib/
";
use
Logging
;
use
commands::
parser
;
my
$log
=
Logging
->
new
('
STDOUT
',
1
);
# config
my
$serveur
=
'
IRC.iiens.net
';
my
$nick
=
'
Sam
';
my
$port
=
6667
;
my
$ircname
=
'
nightiies
';
my
$username
=
'
nightiies
';
my
@channels
=
qw(#nightiies #bigphatsubwoofer)
;
my
$admin
=
'
moise
';
my
$baseurl
=
'
http://nightiies.iiens.net/sam/
';
my
%lastID
;
my
%commandes_admin
=
("
cycle
"
=>
\
&cycle
);
my
$debug
=
0
;
# mode debug
if
(
$#ARGV
+
1
)
{
@channels
=
qw(#hormone)
;
$nick
=
'
glloq
';
$debug
=
1
;
}
local
$/
;
open
CONF
,
'
<
',
'
sam.conf
';
my
$json
=
<
CONF
>
;
my
$conf
=
decode_json
(
$json
);
my
(
$irc
)
=
POE::Component::
IRC
->
spawn
();
my
$dbh
=
DBI
->
connect
('
DBI:mysql:
'
.
$conf
->
{'
bdd
'}
.
'
;host=
'
.
$conf
->
{'
host
'},
$conf
->
{'
user
'},
$conf
->
{'
passwd
'},
{
PrintError
=>
0
,
AutoCommit
=>
1
,
mysql_auto_reconnect
=>
1
})
or
die
("
Couldn't connect to database:
"
.
DBI
->
errstr
);
# Evenements que le bot va gérer
POE::
Session
->
create
(
inline_states
=>
{
_start
=>
\
&bot_start
,
irc_001
=>
\
&on_connect
,
irc_public
=>
\
&on_speak
,
irc_msg
=>
\
&on_query
,
irc_invite
=>
\
&on_invite
},
);
sub
cycle
{
my
(
$arg
)
=
@_
;
$log
->
info
("
refresh modules
");
Module::
Reload
->
check
;
setConf
();
}
sub
setConf
{
commands::parser::
setConf
(
$nick
,
$irc
,
$dbh
,
$log
,
\
%lastID
);
}
## GESTION EVENTS
# Au démarrage
sub
bot_start
{
$irc
->
yield
(
register
=>
"
all
");
$irc
->
yield
(
connect
=>
{
Nick
=>
$nick
,
Username
=>
$username
,
Ircname
=>
$ircname
,
Server
=>
$serveur
,
Port
=>
$port
,
}
);
}
# A la connection
sub
on_connect
{
my
$kernel
=
$_
[
KERNEL
];
setConf
();
$irc
->
yield
(
privmsg
=>
"
NickServ
"
=>
"
identify
"
.
$conf
->
{'
nickserv_pwd
'})
unless
(
$debug
);
$log
->
info
('
connected
');
foreach
(
@channels
)
{
$irc
->
yield
(
join
=>
$_
);
$log
->
info
("
join
$_
");
}
}
# Discussion privée
sub
on_query
{
my
(
$kernel
,
$user
,
$msg
)
=
@_
[
KERNEL
,
ARG0
,
ARG2
];
my
(
$nick
)
=
split
(
/!/
,
$user
);
my
@fake_chan
=
(
$nick
);
my
@args
=
(
$kernel
,
$user
,
\
@fake_chan
,
$msg
);
my
$fake_chan
=
\
@fake_chan
;
return
if
(
commands::parser::
exec
(
@args
));
if
(
$msg
=~
m/^!/
&&
$nick
eq
$admin
)
{
my
$commande
=
(
$msg
=~
m/^!([^ ]*)/
)[
0
];
my
@params
=
grep
{
!
/^\s*$/
}
split
(
/\s+/
,
substr
(
$msg
,
length
("
!
$commande
")));
foreach
(
keys
(
%commandes_admin
))
{
if
(
$commande
eq
$_
)
{
$commandes_admin
{
$_
}
->
(
@params
);
last
;
}
}
}
}
# Quand on m'invite, je join
sub
on_invite
{
my
(
$kernel
,
$user
,
$chan
)
=
@_
[
KERNEL
,
ARG0
,
ARG1
];
my
(
$nick
,
$mask
)
=
split
(
/!/
,
$user
);
$log
->
info
(
$nick
.
"
m'invite sur
"
.
$chan
);
$irc
->
yield
(
join
=>
$chan
);
push
@channels
,
$chan
;
}
# Quand un user parle
sub
on_speak
{
my
(
$kernel
,
$user
,
$chan
,
$msg
)
=
@_
[
KERNEL
,
ARG0
,
ARG1
,
ARG2
];
my
@args
=
(
$kernel
,
$user
,
$chan
,
$msg
);
my
(
$nick
,
$mask
)
=
split
(
/!/
,
$user
);
commands::parser::
exec
(
@args
);
}
use
Sam
;
# Boucle des events
$poe_kernel
->
run
();
Sam::
start
();
exit
0
;
Ce diff est replié.
Cliquez pour l'agrandir.
lib/Sam.pm
0 → 100644
+
171
−
0
Voir le fichier @
fdbbd83e
package
Sam
;
require
Exporter
;
our
@ISA
=
qw(Exporter)
;
our
@EXPORT_OK
=
qw(start)
;
use
strict
;
use
warnings
;
use
POE
;
use
POE::Component::
IRC
;
use
DBI
;
use
JSON
;
use
Logging
;
use
commands::
parser
;
my
$log
=
Logging
->
new
('
STDOUT
',
1
);
# config
my
$serveur
=
'
IRC.iiens.net
';
my
$nick
=
'
Sam
';
my
$port
=
6667
;
my
$ircname
=
'
nightiies
';
my
$username
=
'
nightiies
';
my
@channels
=
qw(#nightiies #bigphatsubwoofer)
;
my
$admin
=
'
moise
';
my
$baseurl
=
'
http://nightiies.iiens.net/sam/
';
my
%lastID
;
my
%commandes_admin
=
("
cycle
"
=>
\
&cycle
);
my
$debug
=
0
;
# mode debug
if
(
$#ARGV
+
1
)
{
@channels
=
qw(#hormone)
;
$nick
=
'
glloq
';
$debug
=
1
;
}
local
$/
;
open
CONF
,
'
<
',
'
sam.conf
';
my
$json
=
<
CONF
>
;
my
$conf
=
decode_json
(
$json
);
my
(
$irc
)
=
POE::Component::
IRC
->
spawn
();
my
$dbh
=
DBI
->
connect
('
DBI:mysql:
'
.
$conf
->
{'
bdd
'}
.
'
;host=
'
.
$conf
->
{'
host
'},
$conf
->
{'
user
'},
$conf
->
{'
passwd
'},
{
PrintError
=>
0
,
AutoCommit
=>
1
,
mysql_auto_reconnect
=>
1
})
or
die
("
Couldn't connect to database:
"
.
DBI
->
errstr
);
# Evenements que le bot va gérer
POE::
Session
->
create
(
inline_states
=>
{
_start
=>
\
&bot_start
,
irc_001
=>
\
&on_connect
,
irc_public
=>
\
&on_speak
,
irc_msg
=>
\
&on_query
,
irc_invite
=>
\
&on_invite
},
);
sub
cycle
{
my
(
$arg
)
=
@_
;
$log
->
info
("
refresh modules
");
Module::
Reload
->
check
;
setConf
();
}
sub
setConf
{
commands::parser::
setConf
(
$nick
,
$irc
,
$dbh
,
$log
,
\
%lastID
);
}
## GESTION EVENTS
# Au démarrage
sub
bot_start
{
$irc
->
yield
(
register
=>
"
all
");
$irc
->
yield
(
connect
=>
{
Nick
=>
$nick
,
Username
=>
$username
,
Ircname
=>
$ircname
,
Server
=>
$serveur
,
Port
=>
$port
,
}
);
}
# A la connection
sub
on_connect
{
my
$kernel
=
$_
[
KERNEL
];
setConf
();
$irc
->
yield
(
privmsg
=>
"
NickServ
"
=>
"
identify
"
.
$conf
->
{'
nickserv_pwd
'})
unless
(
$debug
);
$log
->
info
('
connected
');
foreach
(
@channels
)
{
$irc
->
yield
(
join
=>
$_
);
$log
->
info
("
join
$_
");
}
}
# Discussion privée
sub
on_query
{
my
(
$kernel
,
$user
,
$msg
)
=
@_
[
KERNEL
,
ARG0
,
ARG2
];
my
(
$nick
)
=
split
(
/!/
,
$user
);
my
@fake_chan
=
(
$nick
);
my
@args
=
(
$kernel
,
$user
,
\
@fake_chan
,
$msg
);
my
$fake_chan
=
\
@fake_chan
;
return
if
(
commands::parser::
exec
(
@args
));
if
(
$msg
=~
m/^!/
&&
$nick
eq
$admin
)
{
my
$commande
=
(
$msg
=~
m/^!([^ ]*)/
)[
0
];
my
@params
=
grep
{
!
/^\s*$/
}
split
(
/\s+/
,
substr
(
$msg
,
length
("
!
$commande
")));
foreach
(
keys
(
%commandes_admin
))
{
if
(
$commande
eq
$_
)
{
$commandes_admin
{
$_
}
->
(
@params
);
last
;
}
}
}
}
# Quand on m'invite, je join
sub
on_invite
{
my
(
$kernel
,
$user
,
$chan
)
=
@_
[
KERNEL
,
ARG0
,
ARG1
];
my
(
$nick
,
$mask
)
=
split
(
/!/
,
$user
);
$log
->
info
(
$nick
.
"
m'invite sur
"
.
$chan
);
$irc
->
yield
(
join
=>
$chan
);
push
@channels
,
$chan
;
}
# Quand un user parle
sub
on_speak
{
my
(
$kernel
,
$user
,
$chan
,
$msg
)
=
@_
[
KERNEL
,
ARG0
,
ARG1
,
ARG2
];
my
@args
=
(
$kernel
,
$user
,
$chan
,
$msg
);
my
(
$nick
,
$mask
)
=
split
(
/!/
,
$user
);
commands::parser::
exec
(
@args
);
}
# Boucle des events
sub
start
{
$poe_kernel
->
run
();
}
1
;
Ce diff est replié.
Cliquez pour l'agrandir.
lib/commands/parser.pm
+
1
−
0
Voir le fichier @
fdbbd83e
...
...
@@ -6,6 +6,7 @@ our @EXPORT_OK = qw(exec);
use
strict
;
use
FindBin
;
use
lib
"
$FindBin
::Bin/lib/
";
use
commands::
add
;
use
commands::
list
;
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Alexandre MORIGNOT
@morignot2011
mentioned in commit
c07488ae
·
Il y a 10 ans
mentioned in commit
c07488ae
mentioned in commit c07488aec503fefbf868f6f5316c06ea0bbb4dfb
Afficher/masquer la liste des validations
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter