import os import asyncio from dotenv import load_dotenv from telebot import types from telebot.async_telebot import AsyncTeleBot load_dotenv() BOT_TOKEN = os.getenv("BOT_TOKEN") bot = AsyncTeleBot(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]) asyncio.run(bot.polling())