college-bot-v1/utils/_email.py
2022-09-13 21:19:23 +01:00

58 lines
1.4 KiB
Python

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