Sélectionner une révision Git
matrixeventprocessor.ts
Vote.pm 9,46 Kio
package Vote; # command = vote
use strict;
use warnings;
use Storable;
# Tableau des votes
# On les stocke de telle manière :
# "#chan id" --> "chan" --------> chan/reply name
# |----> "id" ----------> vote id
# |----> "added date" --> timestamp
# |----> "question" ----> yes/no question to answer
# |----> "voters" ------> [user@host voters]
# |----> "results" -----> ("yes" => nb, "no" => nb)
# `----> "author" ------> user@host
# ...
our %votes = ();
# Tableau des derniers votes ajoutés
# Format :
# "chan1" --> dernier vote id
# ...
our %last_added = ();
# ###
# vote_main
# Permet de gérer des votes
#
# Usage :
# !vote new <question>
# !vote del <id>
# !vote list [#chan]
# !vote see <id>
# !vote [<id>] {yes|no}
# ###
sub vote_main
{
my ($conn, $event, $reply_to, $ref_params) = @_;
# Don't use in query, only on chans
unless(substr($reply_to, 0, 1) eq '#')
{
$::displayer->sendto($reply_to, "Can't operate in query, sorry.");
return 1;
}
if(defined($ref_params->[0]) && $ref_params->[0])
{
if($ref_params->[0] eq 'new')
{
return 1 if(new_vote($conn, $event, $reply_to, $ref_params));
}
elsif($ref_params->[0] =~ m'del(ete)?|remove')
{
return 1 if(del_vote($conn, $event, $reply_to, $ref_params));
}
elsif($ref_params->[0] eq 'list')
{
return 1 if(list_votes($conn, $event, $reply_to, $ref_params));
}
elsif($ref_params->[0] eq 'see')
{
return 1 if(see_vote($conn, $event, $reply_to, $ref_params));
}