nonebot-plugin-lingchu-bot 0.5.0.dev1__tar.gz → 0.5.1.dev4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/PKG-INFO +1 -1
  2. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/Repository-Policy.md +1 -0
  3. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/pyproject.toml +1 -1
  4. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/pyproject.toml.orig +1 -1
  5. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/__init__.py +10 -4
  6. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/config.py +1 -1
  7. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/__init__.py +1 -0
  8. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/block.py +5 -0
  9. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/common.py +8 -2
  10. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/mute.py +0 -3
  11. nonebot_plugin_lingchu_bot-0.5.1.dev4/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/protect_notice.py +194 -0
  12. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/remote.py +11 -1
  13. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/locales/en_US/LC_MESSAGES/messages.mo +0 -0
  14. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/locales/en_US/LC_MESSAGES/messages.po +179 -89
  15. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/locales/zh_CN/LC_MESSAGES/messages.mo +0 -0
  16. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/locales/zh_CN/LC_MESSAGES/messages.po +178 -89
  17. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/messages.pot +168 -85
  18. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/platforms.py +2 -2
  19. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/platforms/__init__.py +4 -0
  20. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/platforms/registry.py +27 -0
  21. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/CLA.md +0 -0
  22. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/LICENSE-apache +0 -0
  23. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/LICENSE-cc-by-sa +0 -0
  24. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/LICENSE-cc0 +0 -0
  25. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/LICENSE-code +0 -0
  26. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/LICENSE-docs +0 -0
  27. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/LICENSE-mit +0 -0
  28. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/README.md +0 -0
  29. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/_lingchu_bot_contracts/__init__.py +0 -0
  30. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/_lingchu_bot_contracts/runtime_settings.py +0 -0
  31. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/async_utils.py +0 -0
  32. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/bot_state.py +0 -0
  33. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/handle_config_defaults/__init__.py +0 -0
  34. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/handle_config_manager.py +0 -0
  35. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/handle_default_values.py +0 -0
  36. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/http_security.py +0 -0
  37. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/menu_config.py +0 -0
  38. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/core/mutable_settings.py +0 -0
  39. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/_dialect_compat.py +0 -0
  40. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/__init__.py +0 -0
  41. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/blocklist.py +0 -0
  42. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/identity.py +0 -0
  43. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/message.py +0 -0
  44. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/registry.py +0 -0
  45. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/scheduler.py +0 -0
  46. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/models/subject_policy.py +0 -0
  47. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/orm_crud/__init__.py +0 -0
  48. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/orm_crud/_base.py +0 -0
  49. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/orm_crud/_bulk.py +0 -0
  50. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/orm_crud/_single.py +0 -0
  51. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/toml_store/__init__.py +0 -0
  52. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/toml_store/_helpers.py +0 -0
  53. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/toml_store/_sync.py +0 -0
  54. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/database/toml_store/exceptions.py +0 -0
  55. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/menu.py +0 -0
  56. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/__init__.py +0 -0
  57. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/__init__.py +0 -0
  58. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/__init__.py +0 -0
  59. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/announcement.py +0 -0
  60. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/bot_state.py +0 -0
  61. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/handle_defaults.py +0 -0
  62. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/kick.py +0 -0
  63. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/lifecycle.py +0 -0
  64. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/member.py +0 -0
  65. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/menu.py +0 -0
  66. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/profile.py +0 -0
  67. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/default/protect.py +0 -0
  68. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/napcat/__init__.py +0 -0
  69. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/napcat/announcement.py +0 -0
  70. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/adapters/onebot11/napcat/profile.py +0 -0
  71. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/__init__.py +0 -0
  72. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/announcement.py +0 -0
  73. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/block.py +0 -0
  74. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/bot_state.py +0 -0
  75. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/common.py +0 -0
  76. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/handle_defaults.py +0 -0
  77. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/kick.py +0 -0
  78. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/lifecycle.py +0 -0
  79. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/member.py +0 -0
  80. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/mute.py +0 -0
  81. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/profile.py +0 -0
  82. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/protect.py +0 -0
  83. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/remote.py +0 -0
  84. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/qq/commands/triggers.py +0 -0
  85. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/__init__.py +0 -0
  86. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/__init__.py +0 -0
  87. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/default/__init__.py +0 -0
  88. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/default/bot_state.py +0 -0
  89. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/default/menu.py +0 -0
  90. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/default/moderation.py +0 -0
  91. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/default/mute.py +0 -0
  92. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/handle/telegram/adapters/default/recall.py +0 -0
  93. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/__init__.py +0 -0
  94. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/adapters.py +0 -0
  95. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/handlers/__init__.py +0 -0
  96. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/handlers/api_audit.py +0 -0
  97. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/handlers/bot_connection.py +0 -0
  98. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/handlers/lifecycle.py +0 -0
  99. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/handlers/message_store.py +0 -0
  100. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/hooks/interfaces.py +0 -0
  101. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/__init__.py +0 -0
  102. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/i18n/babel.cfg +0 -0
  103. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/30f5a01259cd_initial_schema.py +0 -0
  104. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/a1b2c3d4e5f6_permissions_schema.py +0 -0
  105. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/b7c8d9e0f1a2_event_policy_partitions.py +0 -0
  106. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/c3d4e5f6a7b8_scheduler_jobs.py +0 -0
  107. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/cf2c06d51a17_blocklist_unique_constraint.py +0 -0
  108. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/d7e8f9a0b1c2_identity_integrity.py +0 -0
  109. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/migrations/f6a7b8c9d0e1_message_protocol_default.py +0 -0
  110. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/__init__.py +0 -0
  111. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/admin.py +0 -0
  112. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/bootstrap.py +0 -0
  113. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/config.py +0 -0
  114. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/service.py +0 -0
  115. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/subject_policy.py +0 -0
  116. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/permissions/types.py +0 -0
  117. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/platforms/qq/__init__.py +0 -0
  118. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/platforms/qq/permissions.py +0 -0
  119. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/platforms/telegram/__init__.py +0 -0
  120. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/platforms/telegram/permissions.py +0 -0
  121. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/repositories/__init__.py +0 -0
  122. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/repositories/blocklist.py +0 -0
  123. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/repositories/message_store.py +0 -0
  124. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/repositories/permissions.py +0 -0
  125. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/repositories/registry.py +0 -0
  126. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/repositories/scheduler_jobs.py +0 -0
  127. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/services/message_store.py +0 -0
  128. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/services/protocol_restart_feedback.py +0 -0
  129. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/services/scheduler.py +0 -0
  130. {nonebot_plugin_lingchu_bot-0.5.0.dev1 → nonebot_plugin_lingchu_bot-0.5.1.dev4}/src/plugins/nonebot_plugin_lingchu_bot/start/startup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: nonebot-plugin-lingchu-bot
3
- Version: 0.5.0.dev1
3
+ Version: 0.5.1.dev4
4
4
  Summary: 由NoneBot2驱动,面向多平台的管理机器人
5
5
  Keywords: nonebot2,nonebot,bot,cross-platform,group-management
6
6
  Author: xinvxueyuan
@@ -54,6 +54,7 @@ in effect for the relevant contribution at the time of its submission.
54
54
 
55
55
  ## Release Records
56
56
 
57
+ - `0.5.0` (2026-08-14): minor release removing the LLM/NovelAI MCP and Pydantic stack, with runtime hardening, dev-data cleanup, and release-flow fixes. Does not trigger the future phase (`0.x`).
57
58
  - `0.4.1` (2026-08-03): patch release hardening release/CI infrastructure (Docker runtime reverted to `python:3.13-slim`, tag pushes via fine-grained PAT after workflow merges, Actions DRY refactor). Does not trigger the future phase (`0.x`).
58
59
  - `0.0.1` (2026-07-06): first formal 0.x release for the current LGPL/GFDL/CC0 phase. This release does not trigger the future phase because the transition rule treats the first public release example as `1.0.0` and excludes `0.x`.
59
60
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nonebot-plugin-lingchu-bot"
3
- version = "0.5.0.dev1"
3
+ version = "0.5.1.dev4"
4
4
  description = "由NoneBot2驱动,面向多平台的管理机器人"
5
5
  keywords = [
6
6
  "nonebot2",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "nonebot-plugin-lingchu-bot"
3
- version = "0.5.0.dev1"
3
+ version = "0.5.1.dev4"
4
4
  # dynamic = ["version"]
5
5
  description = "由NoneBot2驱动,面向多平台的管理机器人"
6
6
  keywords = ["nonebot2", "nonebot", "bot", "cross-platform", "group-management"]
@@ -31,10 +31,7 @@ __plugin_meta__ = PluginMetadata(
31
31
  config=None,
32
32
  supported_adapters=get_supported_adapters(),
33
33
  extra={
34
- "author": [
35
- {"name": "lingchu-bot", "email": "support@xinvstar.xyz"},
36
- {"name": "xinvxueyuan", "email": "xinvxueyuan@yeah.net"},
37
- ],
34
+ "author": "xinvxueyuan",
38
35
  "maintainer": "xinvxueyuan",
39
36
  "priority": 50,
40
37
  "startup": True,
@@ -61,6 +58,15 @@ from .start.startup import startup as startup
61
58
  # Register runtime hooks after business modules because handlers depend on
62
59
  # services.message_store and start.startup.
63
60
  from . import hooks as hooks
61
+
62
+ # zhenxun 等宿主环境同时注册 150+ 插件的 Alconna 命令,默认上限 200 会被突破。
63
+ # 在 lingchu 自身命令注册前抬高全局上限,避免 ExceedMaxCount。
64
+ from arclet.alconna.config import config as _alconna_config
65
+
66
+ _ALCONNA_COMMAND_MAX_COUNT = 500
67
+
68
+ if getattr(_alconna_config, "command_max_count", 200) < _ALCONNA_COMMAND_MAX_COUNT:
69
+ _alconna_config.command_max_count = _ALCONNA_COMMAND_MAX_COUNT
64
70
  # isort: on
65
71
 
66
72
  config = Config.from_nonebot()
@@ -121,7 +121,7 @@ class Config(DeploymentSettings):
121
121
 
122
122
  """
123
123
 
124
- core_version: str = "0.5.0.dev1"
124
+ core_version: str = "0.5.1.dev4"
125
125
  data_dir: Path = field(default_factory=get_plugin_data_dir)
126
126
  config_dir: Path = field(default_factory=get_plugin_config_dir)
127
127
  cache_dir: Path = field(default_factory=get_plugin_cache_dir)
@@ -12,6 +12,7 @@ from . import (
12
12
  mute as mute,
13
13
  profile as profile,
14
14
  protect as protect,
15
+ protect_notice as protect_notice,
15
16
  remote as remote,
16
17
  )
17
18
  from .menu import (
@@ -38,6 +38,7 @@ from .common import (
38
38
  CommandAudit,
39
39
  bot_id,
40
40
  check_bot_privilege,
41
+ check_self_target,
41
42
  check_target_privilege,
42
43
  default_admin_reason,
43
44
  finish_action_error_onebot11,
@@ -97,6 +98,10 @@ async def _block_member(
97
98
 
98
99
  target_user_id, target_name = await resolve_user_onebot11(user, bot, event)
99
100
 
101
+ # 边界条件检查:不能拉黑自己或机器人
102
+ if not await check_self_target(target_user_id, bot, event, command, "拉黑"):
103
+ return None
104
+
100
105
  # 目标用户权限预检
101
106
  if not await check_target_privilege(session, bot, event, target_user_id, command):
102
107
  return None
@@ -169,9 +169,15 @@ async def check_self_target(
169
169
  event: Onebot11GroupMessageEvent,
170
170
  cmd_matcher: Any,
171
171
  action_name: str,
172
+ *,
173
+ check_self: bool = True,
172
174
  ) -> bool:
173
- """检查是否尝试操作自己或机器人。返回 True 表示通过检查。"""
174
- if target_user_id == event.user_id:
175
+ """检查是否尝试操作自己或机器人。返回 True 表示通过检查。
176
+
177
+ ``check_self=False`` 时跳过"操作自己"的拦截(例如允许解禁自己),
178
+ 但仍会拦截对机器人的操作。
179
+ """
180
+ if check_self and target_user_id == event.user_id:
175
181
  msg = await _("不能{action}自己")
176
182
  await cmd_matcher.finish(msg.format(action=action_name))
177
183
  return False
@@ -497,9 +497,6 @@ async def onebot11_unmute(
497
497
  return await member_unmute_cmd.finish(str(e))
498
498
 
499
499
  # 2. 边界条件检查
500
- if target_user_id == event.user_id:
501
- return await member_unmute_cmd.finish(await _("不能解禁自己"))
502
-
503
500
  bot_self_id = bot_self_id_safe(bot)
504
501
  if bot_self_id is not None and target_user_id == bot_self_id:
505
502
  return await member_unmute_cmd.finish(await _("不能解禁机器人"))
@@ -0,0 +1,194 @@
1
+ """QQ 群禁言通知监听:自动恢复受白名单保护的用户。
2
+
3
+ OneBot V11 通过 ``GroupBanNoticeEvent`` 上报群禁言/解禁事件。当受保护
4
+ (白名单)用户被任一管理员禁言时,Lingchu 自动调用 ``set_group_ban`` 解禁,
5
+ 使保护不依赖 bot 自身命令拦截。
6
+
7
+ 规则:
8
+ - 仅处理 ``sub_type == "ban"`` 且 ``duration > 0`` 的禁言;
9
+ - 命中群级或全局保护记录才恢复;
10
+ - QQ 全体禁言期间无法单独解禁个人,通过 bot 自身禁言状态探测并跳过;
11
+ - 超级用户禁言非同级(非超级用户)的受保护用户时强制生效,不自动恢复;
12
+ - 不受"开机/关机"门禁影响,始终生效。
13
+ """
14
+
15
+ from datetime import UTC, datetime
16
+ from typing import Any
17
+
18
+ from nonebot import logger, on_notice, require
19
+ from nonebot.adapters.onebot.v11 import Bot as OneBot11Bot
20
+ from nonebot.adapters.onebot.v11.event import (
21
+ GroupBanNoticeEvent as OneBot11GroupBanNoticeEvent,
22
+ )
23
+ from nonebot.adapters.onebot.v11.exception import ActionFailed as OneBot11ActionFailed
24
+
25
+ require("nonebot_plugin_orm")
26
+ from nonebot_plugin_orm import async_scoped_session, get_session
27
+
28
+ from ......permissions.subject_policy import find_active_subject_policy
29
+ from .common import (
30
+ ONEBOT_V11_ADAPTER_ID,
31
+ QQ_PLATFORM_ID,
32
+ bot_id,
33
+ operator_is_superuser_onebot11,
34
+ )
35
+
36
+ protect_restore_notice = on_notice(priority=1, block=True)
37
+
38
+
39
+ async def _record_protect_restore_audit(
40
+ bot: OneBot11Bot,
41
+ group_id: int,
42
+ user_id: int,
43
+ operator_id: int,
44
+ duration: int,
45
+ ) -> None:
46
+ """后台记录"自动解禁受保护用户"审计。
47
+
48
+ ``record_audit_fire_and_forget`` 面向群消息事件(operator 取
49
+ ``event.user_id``),而通知事件里 ``event.user_id`` 是被禁言用户,
50
+ 操作者是 ``event.operator_id``,因此这里单独写入。
51
+ """
52
+ from ......database.orm_crud import DatabaseError
53
+ from ......repositories.message_store import AuditEvent, record_api_call
54
+
55
+ data_summary = (
56
+ f"operator={operator_id}, target={user_id}, "
57
+ f"action=protect_auto_unmute, group={group_id}, "
58
+ f"sub_type=ban, duration={duration}"
59
+ )
60
+ try:
61
+ async with get_session() as session:
62
+ await record_api_call(
63
+ session,
64
+ AuditEvent(
65
+ platform_id=QQ_PLATFORM_ID,
66
+ adapter_id=ONEBOT_V11_ADAPTER_ID,
67
+ protocol_id=None,
68
+ bot_id=bot_id(bot),
69
+ api_name="notice:protect_auto_unmute",
70
+ data_summary=data_summary,
71
+ result_summary="success",
72
+ exception_summary=None,
73
+ audit_type="notice",
74
+ ),
75
+ )
76
+ except DatabaseError:
77
+ logger.exception(
78
+ "记录受保护用户自动解禁审计失败: group=%s user=%s", group_id, user_id
79
+ )
80
+
81
+
82
+ def _fire_protect_restore_audit(
83
+ bot: OneBot11Bot,
84
+ group_id: int,
85
+ user_id: int,
86
+ operator_id: int,
87
+ duration: int,
88
+ ) -> None:
89
+ from ......core.async_utils import fire_and_forget
90
+
91
+ fire_and_forget(
92
+ _record_protect_restore_audit(bot, group_id, user_id, operator_id, duration),
93
+ name="audit:protect_auto_unmute",
94
+ )
95
+
96
+
97
+ async def _is_whole_group_muted(bot: OneBot11Bot, group_id: int) -> bool:
98
+ """探测目标群是否处于全体禁言中。
99
+
100
+ QQ 全体禁言会禁言除群主外的所有人(含 bot 自己)。通过 bot 自身在该群
101
+ 的 ``shut_up_timestamp`` 是否在未来判断。查询失败时保守返回 False,交由
102
+ 后续 ``set_group_ban`` 的 API 结果兜底。
103
+ """
104
+ try:
105
+ bot_info = await bot.get_group_member_info(
106
+ group_id=group_id,
107
+ user_id=int(bot.self_id),
108
+ no_cache=True,
109
+ )
110
+ except (OneBot11ActionFailed, ValueError, TypeError):
111
+ return False
112
+ shut_up_timestamp = bot_info.get("shut_up_timestamp", 0)
113
+ try:
114
+ muted_until = int(shut_up_timestamp)
115
+ except (TypeError, ValueError):
116
+ return False
117
+ if muted_until <= 0:
118
+ return False
119
+ return muted_until > datetime.now(UTC).timestamp()
120
+
121
+
122
+ @protect_restore_notice.handle()
123
+ async def handle_group_ban_notice(
124
+ bot: OneBot11Bot,
125
+ event: OneBot11GroupBanNoticeEvent,
126
+ session: async_scoped_session,
127
+ ) -> None:
128
+ """受白名单保护的用户被禁言时自动解禁。"""
129
+ if event.sub_type != "ban" or event.duration <= 0:
130
+ return
131
+
132
+ protected = await find_active_subject_policy(
133
+ session,
134
+ policy_type="protected",
135
+ platform_id=QQ_PLATFORM_ID,
136
+ adapter_id=ONEBOT_V11_ADAPTER_ID,
137
+ bot_id=bot_id(bot),
138
+ group_id=event.group_id,
139
+ user_id=event.user_id,
140
+ )
141
+ if protected is None:
142
+ return
143
+
144
+ if await _is_whole_group_muted(bot, event.group_id):
145
+ logger.info(
146
+ "全体禁言中,跳过受保护用户自动恢复: group=%s user=%s",
147
+ event.group_id,
148
+ event.user_id,
149
+ )
150
+ return
151
+
152
+ operator_super = await operator_is_superuser_onebot11(session, event.operator_id)
153
+ target_super = await operator_is_superuser_onebot11(session, event.user_id)
154
+ if operator_super and not target_super:
155
+ logger.info(
156
+ "超级用户禁言非同级受保护用户,强制生效: group=%s operator=%s target=%s",
157
+ event.group_id,
158
+ event.operator_id,
159
+ event.user_id,
160
+ )
161
+ return
162
+
163
+ try:
164
+ await bot.set_group_ban(
165
+ group_id=event.group_id, user_id=event.user_id, duration=0
166
+ )
167
+ except OneBot11ActionFailed as error:
168
+ logger.warning(
169
+ "自动解禁受保护用户失败: group=%s user=%s error=%r",
170
+ event.group_id,
171
+ event.user_id,
172
+ error,
173
+ )
174
+ return
175
+
176
+ _fire_protect_restore_audit(
177
+ bot,
178
+ group_id=event.group_id,
179
+ user_id=event.user_id,
180
+ operator_id=event.operator_id,
181
+ duration=event.duration,
182
+ )
183
+ logger.info(
184
+ "已自动解禁受保护用户: group=%s user=%s operator=%s",
185
+ event.group_id,
186
+ event.user_id,
187
+ event.operator_id,
188
+ )
189
+
190
+
191
+ __all__: tuple[Any, ...] = (
192
+ "handle_group_ban_notice",
193
+ "protect_restore_notice",
194
+ )
@@ -387,7 +387,12 @@ async def onebot11_remote_unmute(
387
387
 
388
388
  # 4. 边界条件检查
389
389
  if not await check_self_target(
390
- target_user_id, bot, event, remote_unmute_cmd, "解禁"
390
+ target_user_id,
391
+ bot,
392
+ event,
393
+ remote_unmute_cmd,
394
+ "解禁",
395
+ check_self=False,
391
396
  ):
392
397
  return None
393
398
 
@@ -648,6 +653,11 @@ async def onebot11_remote_block(
648
653
  return None
649
654
  target_user_id, target_name = user_result
650
655
 
656
+ if not await check_self_target(
657
+ target_user_id, bot, event, remote_block_cmd, "拉黑"
658
+ ):
659
+ return None
660
+
651
661
  if not await _check_remote_target_privilege(
652
662
  session, bot, event, group_id_int, target_user_id, remote_block_cmd
653
663
  ):