Beispiel #1
0
from re import findall
from random import choice

from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent
from nonebot.adapters.cqhttp.message import Message, MessageSegment

from ATRI.config import SauceNAO
from ATRI.utils.limit import FreqLimiter
from .data_source import SaouceNao

_search_flmt = FreqLimiter(5)
_search_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"])

saucenao = SaouceNao().on_command("以图搜图", "透过一张图搜索可能的来源")


@saucenao.args_parser  # type: ignore
async def _get_img(bot: Bot, event: MessageEvent, state: T_State):
    msg = str(event.message).strip()
    quit_list = ["算了", "罢了", "不搜了"]
    if msg in quit_list:
        await saucenao.finish("好吧...")
    if not msg:
        await saucenao.reject("图呢?")
    else:
        state["img"] = msg


@saucenao.handle()
async def _ready_search(bot: Bot, event: MessageEvent, state: T_State):
Beispiel #2
0
import re
from aiohttp import FormData
from random import choice

from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent
from nonebot.adapters.cqhttp.message import Message, MessageSegment

from ATRI.service import Service
from ATRI.rule import is_in_service
from ATRI.utils import request, UbuntuPaste, Translate
from ATRI.utils.limit import FreqLimiter
from ATRI.exceptions import RequestError

URL = "https://trace.moe/api/search?url="
_anime_flmt = FreqLimiter(10)
_anime_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"])

__doc__ = """
通过一张图片搜索你需要的番!据说里*也可以
"""


class Anime(Service):
    def __init__(self):
        Service.__init__(self, "以图搜番", __doc__, rule=is_in_service("以图搜番"))

    @staticmethod
    async def _request(url: str) -> dict:
        aim = URL + url
        try:
Beispiel #3
0
from random import choice

from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent

from ATRI.utils import CoolqCodeChecker
from ATRI.utils.limit import FreqLimiter
from ATRI.utils.apscheduler import scheduler
from .data_source import Chat

_chat_flmt = FreqLimiter(3)
_chat_flmt_notice = choice(
    ["慢...慢一..点❤", "冷静1下", "歇会歇会~~", "我开始为你以后的伴侣担心了..."])

chat = Chat().on_message("闲聊(文爱")


@chat.handle()
async def _chat(bot: Bot, event: MessageEvent):
    user_id = event.get_user_id()
    if not _chat_flmt.check(user_id):
        await chat.finish(_chat_flmt_notice)

    msg = str(event.message)
    repo = await Chat().deal(msg, user_id)
    _chat_flmt.start_cd(user_id)
    await chat.finish(repo)


my_name_is = Chat().on_command("叫我",
                               "更改闲聊(划掉 文爱)时的称呼",
Beispiel #4
0
from random import choice

from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent

from ATRI.service import Service
from ATRI.config import BotSelfConfig
from ATRI.utils.limit import FreqLimiter, DailyLimiter

_repo_flmt = FreqLimiter(20)
_repo_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"])
_repo_dlmt = DailyLimiter(5)
_repo_dlmt_notice = "阿!不能再喝了,再喝就晕过去了!"

REPO_FORMAT = """
来自用户{user}反馈:
{msg}
"""


class Repo(Service):
    def __init__(self):
        Service.__init__(self, "反馈", "向维护者发送消息")


repo = Repo().on_command("来杯红茶", "向维护者发送消息", aliases={"反馈", "报告"})


@repo.args_parser  # type: ignore
async def _get_repo(bot: Bot, event: MessageEvent, state: T_State):
    msg = str(event.message).strip()
Beispiel #5
0
from random import choice

from nonebot.adapters.cqhttp import Bot, MessageEvent

from ATRI.rule import is_in_service, to_bot
from ATRI.service import Service
from ATRI.utils import request
from ATRI.utils.limit import FreqLimiter

URL = "https://zuanbot.com/api.php?level=min&lang=zh_cn"

_curse_flmt = FreqLimiter(3)
_curse_flmt_notice = choice(
    ["我看你是找🔨是吧", "给我适可而止阿!?", "扎布多得了😅", "z?是m吗?我凑那也太恐怖了", "?"])

__doc__ = """
口臭!你急了你急了!
"""


class Curse(Service):
    def __init__(self):
        Service.__init__(self, "口臭", __doc__, rule=is_in_service("口臭"))

    @staticmethod
    async def now() -> str:
        res = await request.get(URL)
        result = await res.text  # type: ignore
        return result

Beispiel #6
0
@me_re_you.handle()
async def _me_re_you(bot: Bot, event: MessageEvent):
    if randint(0, 15) == 5:
        msg = str(event.get_message())
        content, is_ok = Funny().me_re_you(msg)
        if is_ok:
            await me_re_you.finish(content)


fake_msg = Funny().on_command("/fakemsg",
                              "伪造假转发内容,格式:qq-name-content\n可构造多条,使用空格隔开,仅限群聊")

_fake_daliy_max = DailyLimiter(3)
_fake_max_notice = "不能继续下去了!明早再来"
_fake_flmt = FreqLimiter(60)
_fake_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"])


@fake_msg.args_parser  # type: ignore
async def _perp_fake(bot: Bot, event: GroupMessageEvent, state: T_State):
    msg = str(event.message).strip()
    quit_list = ["算了", "罢了"]
    if msg in quit_list:
        await fake_msg.finish("好吧...")
    if not msg:
        await fake_msg.reject("内容呢?格式:qq-name-content\n可构造多条,以上仅为一条,使用空格隔开")
    else:
        state["content"] = msg

Beispiel #7
0
from nonebot.adapters.cqhttp import Bot, MessageEvent

from ATRI.utils.limit import FreqLimiter
from .data_source import Rich


_rich_flmt = FreqLimiter(2)


bili_rich = Rich().on_message("小程序爪巴", block=False)


@bili_rich.handle()
async def _fk_bili(bot: Bot, event: MessageEvent):
    user_id = event.get_user_id()
    if not _rich_flmt.check(user_id):
        return

    msg = str(event.message)
    try:
        result, is_ok = await Rich().fk_bili(msg)
    except BaseException:
        return
    if not is_ok:
        return
    _rich_flmt.start_cd(user_id)
    await bili_rich.finish(result)
Beispiel #8
0
import re
import asyncio
from random import choice
from nonebot.adapters.cqhttp import Bot, MessageEvent, Message

from ATRI.utils.limit import FreqLimiter, DailyLimiter
from ATRI.utils.apscheduler import scheduler
from .data_source import Setu

_setu_flmt = FreqLimiter(120)
_setu_dlmt = DailyLimiter(5)

random_setu = Setu().on_command("来张涩图",
                                "来张随机涩图,冷却2分钟,每天限5张",
                                aliases={"涩图来", "来点涩图", "来份涩图"})


@random_setu.handle()
async def _random_setu(bot: Bot, event: MessageEvent):
    user_id = event.get_user_id()
    if not _setu_flmt.check(user_id):
        await random_setu.finish()
    if not _setu_dlmt.check(user_id):
        await random_setu.finish()

    setu, title, p_id = await Setu().random_setu()
    repo = f"Title: {title}\n" f"Pid: {p_id}"
    await bot.send(event, repo)
    msg_1 = await bot.send(event, Message(setu))
    event_id = msg_1["message_id"]
    _setu_flmt.start_cd(user_id)
Beispiel #9
0
    msg = str(event.message).strip()
    if msg:
        state["encr_de_text"] = msg


@encrypt_de.got("encr_de_text", "内容呢?!")
async def _deal_de(bot: Bot, event: MessageEvent, state: T_State):
    text = state["encr_de_text"]
    en = Encrypt()
    result = en.decode(text)
    await encrypt_de.finish(result)


sepi = Utils().on_command("涩批一下", "将正常的句子涩一涩~")

_sepi_flmt = FreqLimiter(3)
_sepi_flmt_notice = ["涩批爬", "✌🥵✌"]


@sepi.args_parser  # type: ignore
async def _get_sepi(bot: Bot, event: MessageEvent, state: T_State):
    msg = str(event.message).strip()
    quit_list = ["算了", "罢了", "取消"]
    if msg in quit_list:
        await sepi.finish("好吧...")
    if not msg:
        await sepi.reject("内容呢?!")
    else:
        state["sepi_text"] = msg

Beispiel #10
0
from random import choice

from nonebot.adapters.cqhttp import Bot, MessageEvent
from nonebot.adapters.cqhttp.message import Message, MessageSegment

from ATRI.utils.limit import FreqLimiter
from .data_source import CodeRunner

_flmt = FreqLimiter(5)
_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~"])

code_runner = CodeRunner().on_command("/code", "在线运行一段代码,帮助:/code help")


@code_runner.handle()
async def _code_runner(bot: Bot, event: MessageEvent):
    user_id = event.get_user_id()
    if not _flmt.check(user_id):
        await code_runner.finish(_flmt_notice)

    msg = str(event.get_message())
    args = msg.split("\n")

    if not args:
        content = f"> {MessageSegment.at(user_id)}\n" + "请键入 /code help 以获取帮助~!"
    elif args[0] == "help":
        content = f"> {MessageSegment.at(user_id)}\n" + CodeRunner().help()
    elif args[0] == "list":
        content = f"> {MessageSegment.at(user_id)}\n" + CodeRunner(
        ).list_supp_lang()
    else: