import os
import asyncio
from telebot import types
from telebot . async_telebot import AsyncTeleBot
import config
bot = AsyncTeleBot ( config . BOT_TOKEN )
def is_mathematician ( user_id ) - > bool :
return True
# Handle '/start' and '/help'
@bot.message_handler ( commands = [ " help " , " start " ] )
async def send_welcome ( message ) :
markup = types . InlineKeyboardMarkup ( )
btn = types . InlineKeyboardButton ( " Autenticati " , callback_data = " authenticate " )
markup . add ( btn )
await bot . reply_to (
message ,
""" \
Benvenuto nel bot di ingresso per i gruppi telegram del dipartimento di matematica dell ' università di Pisa! Per poter accedere, fai l ' autenticazione con il tuo account di ateneo tramite Google . Clicca il pulsante qui sotto ! \
""" ,
reply_markup = markup ,
)
buttons = { # {name of the button: courses}
" Primo Anno 📚 " : " Analisi 1 🧮: http://example.com/matematica \n Fisica 🧲: http://example.com/fisica \n Informatica 💻: http://example.com/informatica " ,
" Secondo Anno 📚 " : " Algebra 1 ➕ : http://example.com/algebra \n Analisi 2 🧮: http://example.com/analisi2 \n Programmazione 💻: http://example.com/programmazione " ,
" Terzo Anno 📚 " : " Meccanica Razionale 🧲: http://example.com/meccraz \n Calcolo Scientifico 🧮: http://example.com/cs \n LPL 💻: http://example.com/lpl " ,
" Magistrale 🎓 " : " Intelligenza Artificiale 🤖: http://example.com/intelligenzaartificiale \n Data Science 📊: http://example.com/datascience \n Cyber Security 🔒: http://example.com/cybersecurity " ,
" Miscellanea 📝 " : " Spam 📬: http://example.com/spam \n Eventi 🎉: http://example.com/eventi \n • PHC 🏥: http://example.com/phc " ,
}
# Handle button click
@bot.callback_query_handler ( func = lambda call : call . data == " authenticate " )
async def handle_authenticate ( call ) :
await bot . answer_callback_query (
call . id , text = " Autenticazione completata "
) # Avoids to leave the button pressed and sends a message on screen (not in chat)
if is_mathematician ( call . from_user . id ) :
markup = types . InlineKeyboardMarkup ( )
for button in buttons :
markup . add ( types . InlineKeyboardButton ( button , callback_data = button ) )
await bot . send_message (
call . message . chat . id ,
" Autenticazione riuscita! Adesso puoi accedere a tutti i gruppi disponibili presenti " ,
reply_markup = markup ,
)
else :
await bot . send_message (
call . message . chat . id ,
" Sembra che tu non sia iscritto al corso di Laurea in matematica. Se pensi che sia un errore o desideri essere aggiunto, manda una mail a macchinisti@phc.dm.unipi.it. Altrimenti puoi chiedere di farti aggiungere manualmente ai gruppi a cui sei interessato da altri studenti di matematica che sono già iscritti. " ,
)
# Handle button click
@bot.callback_query_handler ( func = lambda call : call . data in buttons )
async def handle_buttons ( call ) :
await bot . answer_callback_query ( call . id ) # Avoids to leave the button pressed, no message is sent on screen
await bot . send_message ( call . message . chat . id , buttons [ call . data ] )
async def polling ( ) :
print ( " Starting telegram bot polling... " )
return await bot . polling ( )