import discord import requests import asyncio import aiohttp import json import calendar import time from discord.ext import commands, tasks from discord.commands import slash_command from mailtm import Email with open('tempmail.json', 'r', encoding='utf-8') as f: tempmail = f.readlines() class tempmail(commands.Cog): def __init__(self, bot: discord.Bot): self.bot = bot @commands.Cog.listener() async def on_ready(self): self.bot.add_view(setupview(self.bot, self.listener)) def listener(self, message): with open('tempmail.json', 'r', encoding='utf-8') as f: data = json.load(f) if message['address'] in data: channel = self.bot.get_channel(data[message['to']]['channel_id']) embed = discord.Embed(title="New email", description=f"Subject: {message['subject']}\nContent: {message['text'] if message['text'] else message['html']}", color=discord.Colour.embed_background()) channel.send(embed=embed) @slash_command(name="setup_panel", description="Setup temp mail panel", guild_ids=[1186445469442920508]) async def setup_panel(self, ctx: commands.Context): embed = discord.Embed(title="Setup Panel", description="Setup panel created", color=discord.Colour.embed_background()) await ctx.channel.send(embed=embed, view=setupview(self.bot, self.listener)) await ctx.respond(embed=embed, ephemeral=True) def setup(bot: discord.Bot): bot.add_cog(tempmail(bot)) class setupview(discord.ui.View): def __init__(self, bot, listener): super().__init__(timeout=None) self.bot = bot self.listener = listener @discord.ui.button(label="Create temp mail", style=discord.ButtonStyle.primary, emoji="⭐", custom_id="keks", row=2) async def button_callback1(self, button, interaction): current_GMT = time.gmtime() time_stamp = calendar.timegm(current_GMT) self.email = Email() self.email.register() self.email.start(self.listener) category = self.bot.get_channel(1189704833607938060) channel = await category.create_text_channel(self.email.address) with open('tempmail.json', 'r', encoding='utf-8') as f: data = json.load(f) data[self.email.address] = { "address": self.email.address, "channel_id": channel.id, "time_created": time_stamp } with open('tempmail.json', 'w', encoding='utf-8') as f: json.dump(data, f, indent=4) embed = discord.Embed(title="Temp mail created", description=f"Your temp mail is {self.email.address}", color=discord.Colour.embed_background()) await interaction.response.send_message(embed=embed, ephemeral=True) await channel.send(embed=embed)