qqbotsdk: QQ 官方机器人 SDK(协议层/DI/业务 API/测试/文档)

This commit is contained in:
snowy-yang committed 2026-09-11 19:49:17 +08:00
commit 0c364bf803
32 files changed
+3760

No files matched your search

+47
View File
@@ -0,0 +1,47 @@
from qqbotsdk.config import Config
from qqbotsdk.connecter import WebhookConnecter
from qqbotsdk.emitter import EventEmitter
from qqbotsdk.queue import EventQueue
def make_connecter() -> WebhookConnecter:
config = Config(
app_id="app",
app_secret="secret",
base_url="https://api.bot.qq.com",
timeout=None, # type: ignore[arg-type]
connecter="webhook",
intents_file="intents.toml",
webhook_host="0.0.0.0",
webhook_port=8080,
webhook_path="/qqbot/webhook",
)
return WebhookConnecter(config, EventEmitter(EventQueue()), EventQueue())
def test_first_push_is_not_duplicate():
c = make_connecter()
assert not c._duplicated("evt-1")
def test_same_id_within_ttl_is_duplicate():
c = make_connecter()
assert not c._duplicated("evt-1")
assert c._duplicated("evt-1")
def test_none_or_empty_id_never_duplicates():
c = make_connecter()
assert not c._duplicated(None)
assert not c._duplicated("")
assert not c._duplicated(None)
def test_expired_entries_are_evicted():
c = make_connecter()
assert not c._duplicated("evt-1")
# 人为把记录改成过期
for key in list(c._seen):
c._seen[key] -= c._DEDUP_TTL + 1
assert not c._duplicated("evt-1")
assert "evt-1" in c._seen # 以新时间戳重新记录