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()