You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

73 lines
3.2 KiB
Python

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