1
0
This repository has been archived on 2024-10-06. You can view files and clone it, but cannot push or open issues or pull requests.
Achievement-Promotion/bot.py

69 lines
2.4 KiB
Python
Raw Normal View History

2023-03-22 21:28:15 +09:00
import os
import asyncio
from typing import Any
import disnake
2023-03-22 21:31:01 +09:00
from disnake.ext import commands
2023-03-22 21:28:15 +09:00
from dotenv import load_dotenv
from linked_roles import RoleMetadataType, LinkedRolesOAuth2, RoleMetadataRecord
load_dotenv()
bot = commands.InteractionBot(
2023-03-23 00:24:53 +09:00
status=disnake.Status.dnd,
activity=disnake.Activity(type=disnake.ActivityType.watching, name="Achievements"),
2023-03-22 21:28:15 +09:00
intents=disnake.Intents.default()
)
2023-03-22 22:42:48 +09:00
def list_chunk(lst, n):
return [lst[i:i+n] for i in range(0, len(lst), n)]
2023-03-22 21:28:15 +09:00
async def async_list(values: list) -> Any:
for value in values:
yield value
await asyncio.sleep(0)
@bot.slash_command(name="register", description="Linked Role의 기본적인 연동을 설정합니다.")
@commands.is_owner()
async def _addConnection(inter: disnake.ApplicationCommandInteraction):
await inter.response.defer(ephemeral=True)
records = [
2023-03-22 23:06:29 +09:00
RoleMetadataRecord(
key="tutorial",
name="Honor roll",
description="튜토리얼 스테이지를 퍼펙트로 클리어해야 합니다.",
type=RoleMetadataType.boolean_equal
),
2023-03-23 11:43:31 +09:00
RoleMetadataRecord(
key="clear",
name="New Day",
description="모든 스테이지를 클리어해야 합니다.",
type=RoleMetadataType.boolean_equal
),
2023-03-22 23:06:29 +09:00
RoleMetadataRecord(
key="allperfect",
name="Go to bed",
description="모든 스테이지를 퍼펙트로 클리어해야 합니다.",
type=RoleMetadataType.boolean_equal
),
2023-03-22 21:28:15 +09:00
RoleMetadataRecord(
key="complete",
name="ALL CLEAR!!",
2023-03-22 22:42:48 +09:00
description="게임의 도전 과제를 모두 달성해야 합니다.",
2023-03-22 21:28:15 +09:00
type=RoleMetadataType.boolean_equal
),
RoleMetadataRecord(
key="percentage",
2023-03-23 00:08:39 +09:00
name="Percent of Achievement",
2023-03-22 22:42:48 +09:00
description="% 이상의 도전 과제를 달성해야 합니다.",
2023-03-22 21:28:15 +09:00
type=RoleMetadataType.interger_greater_than_or_equal
2023-03-23 11:43:31 +09:00
)
2023-03-22 21:28:15 +09:00
]
2023-03-22 22:00:40 +09:00
async with LinkedRolesOAuth2(client_id=os.getenv("CLIENT_ID"), token=os.getenv("BOT_TOKEN")) as client:
2023-03-22 22:54:16 +09:00
try:
await client.register_role_metadata(records=tuple(records), force=True)
except Exception as e:
await inter.edit_original_message(e)
else:
await inter.edit_original_message(content="> :star2: 역할 추가가 완료되었습니다!")
2023-03-22 21:28:15 +09:00
bot.run(os.getenv("BOT_TOKEN"))