import secrets import discord import config import aiosmtplib as smtp from email.message import EmailMessage gmail_cfg = {"addr": "smtp.gmail.com", "username": config.email, "password": config.email_password, "port": 465} async def send_verification_code(user: discord.User, student_number: str, **kwargs) -> str: """Sends a verification code, returning said verification code, to the student.""" code = secrets.token_hex(16) text = ( f"Hey {user} ({student_number})! The code to join the hi^5 code is '{code}' - use " f"'/verify {code}' in the bot's DMs to continue \N{dancer}\n\n~nex" ) msg = EmailMessage() msg["From"] = gmail_cfg["username"] msg["To"] = f"{student_number}@my.leedscitycollege.ac.uk" msg["Bcc"] = gmail_cfg["username"] msg["Subject"] = "Server Verification" msg.set_content(text) kwargs.setdefault("hostname", gmail_cfg["addr"]) kwargs.setdefault("port", gmail_cfg["port"]) kwargs.setdefault("use_tls", True) kwargs.setdefault("username", gmail_cfg["username"]) kwargs.setdefault("password", gmail_cfg["password"]) kwargs.setdefault("start_tls", not kwargs["use_tls"]) assert kwargs["start_tls"] != kwargs["use_tls"] await smtp.send(msg, **kwargs) return code