Skip to content

Commit

Permalink
feat: 恢复ratelimit
Browse files Browse the repository at this point in the history
  • Loading branch information
RockChinQ committed Feb 1, 2024
1 parent 0dec10d commit f340a44
Show file tree
Hide file tree
Showing 8 changed files with 58 additions and 41 deletions.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
55 changes: 55 additions & 0 deletions pkg/pipeline/ratelimit/ratelimit.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
from __future__ import annotations

import typing

from .. import entities, stagemgr, stage
from . import algo
from .algos import fixedwin
from ...core import entities as core_entities


@stage.stage_class("RequireRateLimitOccupancy")
@stage.stage_class("ReleaseRateLimitOccupancy")
class RateLimit(stage.PipelineStage):

algo: algo.ReteLimitAlgo

async def initialize(self):
self.algo = fixedwin.FixedWindowAlgo(self.ap)
await self.algo.initialize()

async def process(
self,
query: core_entities.Query,
stage_inst_name: str,
) -> typing.Union[
entities.StageProcessResult,
typing.AsyncGenerator[entities.StageProcessResult, None],
]:
"""处理
"""
if stage_inst_name == "RequireRateLimitOccupancy":
if await self.algo.require_access(
query.launcher_type.value,
query.launcher_id,
):
return entities.StageProcessResult(
result_type=entities.ResultType.CONTINUE,
new_query=query,
)
else:
return entities.StageProcessResult(
result_type=entities.ResultType.INTERRUPT,
new_query=query,
console_notice=f"根据限速规则忽略 {query.launcher_type.value}:{query.launcher_id} 消息",
user_notice=self.ap.tips_mgr.data['rate_limit_drop_tip']
)
elif stage_inst_name == "ReleaseRateLimitOccupancy":
await self.algo.release_access(
query.launcher_type,
query.launcher_id,
)
return entities.StageProcessResult(
result_type=entities.ResultType.CONTINUE,
new_query=query,
)
3 changes: 3 additions & 0 deletions pkg/pipeline/stagemgr.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,17 @@
from .respback import respback
from .wrapper import wrapper
from .preproc import preproc
from .ratelimit import ratelimit


stage_order = [
"GroupRespondRuleCheckStage",
"BanSessionCheckStage",
"PreContentFilterStage",
"PreProcessor",
"RequireRateLimitOccupancy",
"MessageProcessor",
"ReleaseRateLimitOccupancy",
"PostContentFilterStage",
"ResponseWrapper",
"LongTextProcessStage",
Expand Down
10 changes: 0 additions & 10 deletions pkg/platform/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,7 @@
from mirai import At, GroupMessage, MessageEvent, StrangerMessage, \
FriendMessage, Image, MessageChain, Plain
import mirai
import func_timeout

from ..provider import session as openai_session

import tips as tips_custom
from ..platform import adapter as msadapter
from .ratelim import ratelim

from ..core import app, entities as core_entities
from ..plugin import events
Expand All @@ -31,15 +25,11 @@ class PlatformManager:
# modern
ap: app.Application = None

ratelimiter: ratelim.RateLimiter = None

def __init__(self, ap: app.Application = None):

self.ap = ap
self.ratelimiter = ratelim.RateLimiter(ap)

async def initialize(self):
await self.ratelimiter.initialize()

config = self.ap.cfg_mgr.data

Expand Down
31 changes: 0 additions & 31 deletions pkg/platform/ratelim/ratelim.py

This file was deleted.

0 comments on commit f340a44

Please sign in to comment.