Working Basics
This commit is contained in:
parent
494fe4c850
commit
b0230a6d88
48
main.py
48
main.py
|
|
@ -1,6 +1,7 @@
|
||||||
import os
|
import os
|
||||||
import discord
|
import discord
|
||||||
from discord import app_commands
|
from discord import app_commands
|
||||||
|
from discord.ext import tasks
|
||||||
|
|
||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
|
|
||||||
|
|
@ -29,22 +30,11 @@ async def first_command(interaction: discord.Interaction):
|
||||||
await chanel.send("Hi")
|
await chanel.send("Hi")
|
||||||
|
|
||||||
|
|
||||||
@tree.command(
|
async def render_manga_list_in_dm(interaction: discord.Interaction, manga_list: list[manga_api.Manga]):
|
||||||
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.send_message("Check your DM's")
|
await interaction.response.send_message("Check your DM's")
|
||||||
chanel = await interaction.user.create_dm()
|
|
||||||
|
|
||||||
manga_list = mh.search(title)
|
|
||||||
|
chanel = await interaction.user.create_dm()
|
||||||
view = embed_util.ListManga(manga_list)
|
view = embed_util.ListManga(manga_list)
|
||||||
msg = await chanel.send(view=view, embed=embed_util.manga_embed(manga_list[0]))
|
msg = await chanel.send(view=view, embed=embed_util.manga_embed(manga_list[0]))
|
||||||
await view.force_reload(msg)
|
await view.force_reload(msg)
|
||||||
|
|
@ -62,10 +52,38 @@ async def search_command(
|
||||||
print(f"Userid {interaction.user.id} removed mangaid {manga_id}")
|
print(f"Userid {interaction.user.id} removed mangaid {manga_id}")
|
||||||
man.remove_user_from_manga(interaction.user, manga_api.Manga(manga_id))
|
man.remove_user_from_manga(interaction.user, manga_api.Manga(manga_id))
|
||||||
|
|
||||||
|
|
||||||
await chanel.send("Done")
|
await chanel.send("Done")
|
||||||
await man.update()
|
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 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 render_manga_list_in_dm(interaction, man.get_user_mangas(interaction.user))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@tasks.loop(minutes=5)
|
||||||
|
async def update_manga():
|
||||||
|
await man.update()
|
||||||
|
|
||||||
|
|
||||||
@client.event
|
@client.event
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
|
|
|
||||||
27
manager.py
27
manager.py
|
|
@ -4,14 +4,24 @@ import json
|
||||||
import embed_util
|
import embed_util
|
||||||
import manga_api
|
import manga_api
|
||||||
|
|
||||||
_manager = None
|
import os.path
|
||||||
|
|
||||||
|
|
||||||
class Manager:
|
class Manager:
|
||||||
def __init__(self, client):
|
def __init__(self, client, savefile: str = "manager.json"):
|
||||||
self.client: discord.Client = client
|
self.client: discord.Client = client
|
||||||
self.manga = {}
|
self.manga = {}
|
||||||
self.chapters = {}
|
self.chapters = {}
|
||||||
|
self.savefile = savefile
|
||||||
|
|
||||||
|
def get_user_mangas(self, user: discord.User) -> list[manga_api.Manga]:
|
||||||
|
manga_ids = []
|
||||||
|
|
||||||
|
for manga_id in self.manga.keys():
|
||||||
|
if user.id in self.manga[manga_id]:
|
||||||
|
manga_ids.append(manga_id)
|
||||||
|
|
||||||
|
return [manga_api.Manga(manga_id) for manga_id in manga_ids]
|
||||||
|
|
||||||
def add_user_to_manga(self, user: discord.User, manga: manga_api.Manga) -> None:
|
def add_user_to_manga(self, user: discord.User, manga: manga_api.Manga) -> None:
|
||||||
if manga.id in self.manga.keys():
|
if manga.id in self.manga.keys():
|
||||||
|
|
@ -53,8 +63,17 @@ class Manager:
|
||||||
await dm_channel.send(embed=embed_util.chapter_embed(manga, chapter), files=embed_util.get_chapter_files(manga))
|
await dm_channel.send(embed=embed_util.chapter_embed(manga, chapter), files=embed_util.get_chapter_files(manga))
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
with open("manager.json", "w") as f:
|
with open(self.savefile, "w") as f:
|
||||||
json.dump(self.to_dict(), f)
|
json.dump(self.to_dict(), f, indent=4)
|
||||||
|
|
||||||
|
def load(self):
|
||||||
|
if os.path.isfile(self.savefile):
|
||||||
|
with open(self.savefile, "r") as f:
|
||||||
|
self.from_dict(json.load(f))
|
||||||
|
|
||||||
|
def from_dict(self, data: dict):
|
||||||
|
self.manga = data["manga"]
|
||||||
|
self.chapters = data["chapters"]
|
||||||
|
|
||||||
def to_dict(self):
|
def to_dict(self):
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ class Chapter:
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str({
|
return str({
|
||||||
|
"id": self.id,
|
||||||
"chapter_vol": self.get_volume(),
|
"chapter_vol": self.get_volume(),
|
||||||
"chapter_num": self.get_number(),
|
"chapter_num": self.get_number(),
|
||||||
"chapter_url": self.get_url()
|
"chapter_url": self.get_url()
|
||||||
|
|
@ -128,7 +129,10 @@ class Manga:
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return str({
|
return str({
|
||||||
|
"id": self.id,
|
||||||
"title": self.get_title(),
|
"title": self.get_title(),
|
||||||
|
"url": self.get_url(),
|
||||||
|
"art_url": self.get_cover_art_url(),
|
||||||
"latest_chapter": str(self.get_latest_chap())
|
"latest_chapter": str(self.get_latest_chap())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
@ -153,4 +157,4 @@ class MangaHandler:
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
mh = MangaHandler()
|
mh = MangaHandler()
|
||||||
print(mh.search("Umineko no Naku Koro ni Episode 4: Alliance of the Golden Witch")[0].get_latest_chap())
|
print(mh.search("Umineko no Naku Koro ni Episode 4: Alliance of the Golden Witch")[0])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue