105 lines
2.7 KiB
Python
105 lines
2.7 KiB
Python
import os
|
|
import discord
|
|
from discord import app_commands
|
|
from discord.ext import tasks
|
|
|
|
from dotenv import load_dotenv
|
|
|
|
import embed_util
|
|
import manager
|
|
import manga_api
|
|
|
|
mh = manga_api.MangaHandler()
|
|
|
|
load_dotenv()
|
|
|
|
intents = discord.Intents.default()
|
|
client = discord.Client(intents=intents)
|
|
tree = app_commands.CommandTree(client)
|
|
|
|
man = manager.Manager(client)
|
|
|
|
|
|
@tree.command(
|
|
name="ping",
|
|
description="My first application Command",
|
|
guild=discord.Object(id=1042133536926347324)
|
|
)
|
|
async def first_command(interaction: discord.Interaction):
|
|
chanel = await interaction.user.create_dm()
|
|
await chanel.send("Hi")
|
|
|
|
|
|
async def render_manga_list_in_dm(interaction: discord.Interaction, manga_list: list[manga_api.Manga]):
|
|
chanel = await interaction.user.create_dm()
|
|
|
|
if len(manga_list) == 0:
|
|
await chanel.send("No Manga in Here")
|
|
return
|
|
|
|
view = embed_util.ListManga(manga_list)
|
|
msg = await chanel.send(view=view, embed=embed_util.manga_embed(manga_list[0]))
|
|
view.set_msg(msg)
|
|
await view.force_reload()
|
|
|
|
await interaction.followup.send("Query done, Check your DM's")
|
|
|
|
await view.wait()
|
|
|
|
print("Done.. Checking Returns")
|
|
ret: list[dict] = view.ret
|
|
for action in ret:
|
|
if action["action"] == 1:
|
|
manga_id = action["manga"]
|
|
print(f"Userid {interaction.user.id} added mangaid {manga_id}")
|
|
man.add_user_to_manga(interaction.user, manga_api.Manga(manga_id))
|
|
if action["action"] == -1:
|
|
manga_id = action["manga"]
|
|
print(f"Userid {interaction.user.id} removed mangaid {manga_id}")
|
|
man.remove_user_from_manga(interaction.user, manga_api.Manga(manga_id))
|
|
|
|
await msg.delete()
|
|
await man.update()
|
|
|
|
|
|
@tree.command(
|
|
name="search",
|
|
description="Search for manga to follow",
|
|
guild=discord.Object(id=1042133536926347324)
|
|
)
|
|
@app_commands.describe(title='Title of the manga to search for')
|
|
async def search_command(
|
|
interaction: discord.Interaction,
|
|
title: str
|
|
):
|
|
await interaction.response.defer()
|
|
|
|
await render_manga_list_in_dm(interaction, mh.search(title))
|
|
|
|
|
|
@tree.command(
|
|
name="list",
|
|
description="List the manga you follow",
|
|
guild=discord.Object(id=1042133536926347324)
|
|
)
|
|
async def list_command(interaction: discord.Interaction):
|
|
await interaction.response.defer()
|
|
|
|
await render_manga_list_in_dm(interaction, man.get_user_mangas(interaction.user))
|
|
|
|
|
|
@tasks.loop(minutes=5)
|
|
async def update_manga():
|
|
print("Updating... ")
|
|
await man.update()
|
|
print("Update Finished!")
|
|
|
|
|
|
@client.event
|
|
async def on_ready():
|
|
await tree.sync(guild=discord.Object(id=1042133536926347324))
|
|
print("Ready!")
|
|
|
|
|
|
client.run(os.environ.get("BOT_TOKEN"))
|