Base per iniziare lo sviluppo di un bot Telegram in Perl

 

Implementazione in Perl delle API Telegram, con una pseudo autenticazione direttamente via chat.

 

#!/usr/bin/perl
use Data::Dumper;
use WWW::Telegram::BotAPI;
use syntax 'junction';
use autobox;
use File::Touch;

####################

my $authPassword = "password";

####################
# Dax 2017
# Note
# http://search.cpan.org/dist/WWW-Telegram-BotAPI/lib/WWW/Telegram/BotAPI.pm
# http://www.fileformat.info/info/emoji/list.htm
####################

my $api                 = WWW::Telegram::BotAPI->new (  token => 'my-token' );
my ($offset, $updates)  = 0;
my @autorizedIds        = ();
my $authStorage         = "telegramBotAuths";
my @doneMessages        = ('Done.', 'Fatto!');
my @helloMessages       = ('Ciao', 'Hei', chr(0x263a) );

sub ARRAY::contains { any( @{$_[0]} ) eq $_[1] };
sub ARRAY::getRandom { return @{$_[0]}[rand @{$_[0]}] };


#
#disable buffer
#
$
= 1; # # check auth storage # if( ! -e $authStorage ) { touch($authStorage); } # # load auth storage # open my $f,"<:encoding(utf8)", $authStorage or die "\n Cannot open $authStorage $!\n"; while( my $line = <$f> ){ $line =~ s/\n//g; $line =~ s/\r//g; push(@autorizedIds, $line); } # # main infinite loop # while (true) { $updates = $api->getUpdates ({ timeout => 30, $offset ? (offset => $offset) : () }); unless ($updates and ref $updates eq "HASH" and $updates->{ok}) { warn "WARNING: getUpdates returned a false value - trying again..."; next; } for my $u (@{$updates->{result}}) { $offset = $u->{update_id} + 1 if $u->{update_id} >= $offset; if (my $text = $u->{message}{text}) { print Dumper($u); # # check auth # if( !@autorizedIds->contains( $u->{message}{from}{id} ) ){ # # get auth # if( $text eq $authPassword ){ $api->sendMessage ({ chat_id => $u->{message}{chat}{id}, text => $u->{message}{from}{first_name} .", you are welcome! ".chr(0x1F389) }); push( @autorizedIds, $u->{message}{chat}{id} ); # # save into storage the new item # open( my $fh, '>>', $authStorage ) or die "Error when write in $authStorage\n"; say $fh $u->{message}{from}{id}; close $fh; next; } $api->sendMessage ({ chat_id => $u->{message}{chat}{id}, text => "You must first authenticate to chat with me ".chr(0x1F601) }); next; } #print $u->{message}{from}{first_name} . " write: $text\n"; if(lc($text) eq "ciao"){ $api->sendMessage ({ chat_id => $u->{message}{chat}{id}, text => @helloMessages->getRandom() }); next; } if( lc($text) eq "uptime" ){ $api->sendMessage ({ chat_id => $u->{message}{chat}{id}, text => `uptime` }); } } } }

 

Lascia un commento


 
 
 Informazioni

Questo sito web utilizza i cookie. Continuando ad utilizzare il sito web, acconsentite al l'uso dei cookies. Dimmi di più...