mirror of
https://github.com/PaiGramTeam/PaiGram.git
synced 2024-11-25 09:37:30 +00:00
53 lines
1.9 KiB
Python
53 lines
1.9 KiB
Python
from typing import TYPE_CHECKING
|
|
|
|
from simnet.errors import RedemptionInvalid, RedemptionClaimed, RegionNotSupported, RedemptionCooldown
|
|
from telegram import Update
|
|
from telegram.ext import CallbackContext
|
|
from telegram.ext import filters
|
|
|
|
from core.plugin import Plugin, handler
|
|
from plugins.tools.genshin import GenshinHelper
|
|
from utils.log import logger
|
|
|
|
if TYPE_CHECKING:
|
|
from simnet import GenshinClient
|
|
|
|
|
|
class Redeem(Plugin):
|
|
"""兑换码兑换"""
|
|
|
|
def __init__(
|
|
self,
|
|
genshin_helper: GenshinHelper,
|
|
):
|
|
self.genshin_helper = genshin_helper
|
|
|
|
@handler.command(command="redeem", block=False)
|
|
@handler.message(filters=filters.Regex("^兑换码兑换(.*)"), block=False)
|
|
async def command_start(self, update: Update, context: CallbackContext) -> None:
|
|
user = update.effective_user
|
|
message = update.effective_message
|
|
args = self.get_args(context)
|
|
code = args[0] if args else None
|
|
logger.info("用户 %s[%s] 兑换码兑换命令请求 code[%s]", user.full_name, user.id, code)
|
|
if filters.ChatType.GROUPS.filter(message):
|
|
self.add_delete_message_job(message)
|
|
try:
|
|
if not code:
|
|
raise RedemptionInvalid
|
|
async with self.genshin_helper.genshin(user.id) as client:
|
|
client: "GenshinClient"
|
|
await client.redeem_code_by_hoyolab(code)
|
|
msg = "兑换码兑换成功。"
|
|
except RegionNotSupported:
|
|
msg = "此服务器暂不支持进行兑换哦~"
|
|
except RedemptionInvalid:
|
|
msg = "兑换码格式不正确,请确认。"
|
|
except RedemptionClaimed:
|
|
msg = "此兑换码已经兑换过了。"
|
|
except RedemptionCooldown as e:
|
|
msg = e.message
|
|
reply_message = await message.reply_text(msg)
|
|
if filters.ChatType.GROUPS.filter(reply_message):
|
|
self.add_delete_message_job(reply_message)
|