Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ 当管理员尝试ban真寻时将被反杀 #1628

Merged
merged 1 commit into from
Sep 14, 2024
Merged

Conversation

HibiKier
Copy link
Owner

@HibiKier HibiKier commented Sep 14, 2024

Summary by Sourcery

实现一个功能,当管理员尝试禁止机器人时,反转禁止操作,导致他们被暂时禁止。通过添加对空用户ID的检查和提供反馈来增强消息处理。

新功能:

  • 引入一个功能,当管理员尝试禁止机器人时,管理员将被暂时禁止。

增强:

  • 通过检查空用户ID并提供适当的反馈来改进消息处理。
Original summary in English

Summary by Sourcery

Implement a feature that reverses the ban action on administrators attempting to ban the bot, resulting in their temporary ban. Enhance message handling by adding checks for empty user IDs and providing feedback.

New Features:

  • Introduce a feature where attempting to ban the bot by an administrator results in the administrator being temporarily banned instead.

Enhancements:

  • Improve message handling by checking for empty user IDs and providing appropriate feedback.

@HibiKier HibiKier merged commit f2e354e into dev Sep 14, 2024
1 check passed
Copy link
Contributor

sourcery-ai bot commented Sep 14, 2024

审核指南由 Sourcery 提供

此拉取请求实现了一个功能,即试图封禁机器人(真寻)的管理员将被自己封禁。它还包括对封禁和解封功能、错误处理和日志记录的改进。

文件级别更改

更改 详情 文件
为针对机器人的管理员实现反向封禁
  • 在封禁时添加对机器人的 self_id 的检查
  • 对试图封禁机器人的管理员实施 30 秒封禁
  • 为反向封禁场景添加自定义消息
zhenxun/builtin_plugins/admin/ban/__init__.py
改进封禁时长处理和消息传递
  • 在封禁消息中添加时长文本
  • 改进日志消息和用户反馈中封禁时长的格式
zhenxun/builtin_plugins/admin/ban/__init__.py
增强错误处理和输入验证
  • 添加对空用户 ID 的检查
  • 改进封禁和解封功能中对群组 ID 和用户 ID 的处理
zhenxun/builtin_plugins/admin/ban/__init__.py
重构和改进代码结构
  • 简化条件语句
  • 改进字符串格式化和消息构建
  • 在 _data_source.py 中重新排序导入
zhenxun/builtin_plugins/admin/ban/__init__.py
zhenxun/builtin_plugins/admin/ban/_data_source.py

提示
  • 通过在拉取请求中评论 @sourcery-ai review 来触发新的 Sourcery 审核。
  • 通过直接回复审核评论继续与 Sourcery 的讨论。
  • 您可以随时通过访问您的仪表板来更改审核设置:
    • 启用或禁用 Sourcery 生成的拉取请求摘要或审核指南;
    • 更改审核语言;
  • 如果您有任何问题或反馈,您可以随时联系我们
Original review guide in English

Reviewer's Guide by Sourcery

This pull request implements a feature where administrators attempting to ban the bot (真寻) will be banned themselves. It also includes improvements to the ban and unban functionality, error handling, and logging.

File-Level Changes

Change Details Files
Implement reverse ban for administrators targeting the bot
  • Add check for bot's self_id when banning
  • Implement 30-second ban for administrators attempting to ban the bot
  • Add custom message for reverse ban scenario
zhenxun/builtin_plugins/admin/ban/__init__.py
Improve ban duration handling and messaging
  • Add duration text to ban messages
  • Improve formatting of ban duration in log messages and user feedback
zhenxun/builtin_plugins/admin/ban/__init__.py
Enhance error handling and input validation
  • Add check for empty user ID
  • Improve handling of group ID and user ID in ban and unban functions
zhenxun/builtin_plugins/admin/ban/__init__.py
Refactor and improve code structure
  • Simplify conditional statements
  • Improve string formatting and message construction
  • Reorder imports in _data_source.py
zhenxun/builtin_plugins/admin/ban/__init__.py
zhenxun/builtin_plugins/admin/ban/_data_source.py

Tips
  • Trigger a new Sourcery review by commenting @sourcery-ai review on the pull request.
  • Continue your discussion with Sourcery by replying directly to review comments.
  • You can change your review settings at any time by accessing your dashboard:
    • Enable or disable the Sourcery-generated pull request summary or reviewer's guide;
    • Change the review language;
  • You can always contact us if you have any questions or feedback.

@HibiKier HibiKier deleted the feature/ban_feature branch September 14, 2024 08:30
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@HibiKier - 我已经审查了你的更改 - 这里有一些反馈:

总体评论

  • 考虑记录或通知超级用户关于机器人上的管理员禁令尝试,而不是自动禁止管理员。这可以防止潜在的滥用和混淆。
  • 代码改进,例如更具描述性的禁令持续时间消息和重构,是好的。然而,管理员操作行为的变化可能需要进一步讨论。
这是我在审查期间查看的内容
  • 🟢 一般问题:一切看起来都很好
  • 🟢 安全性:一切看起来都很好
  • 🟢 测试:一切看起来都很好
  • 🟡 复杂性:发现1个问题
  • 🟢 文档:一切看起来都很好

Sourcery 对开源是免费的 - 如果你喜欢我们的评论,请考虑分享它们 ✨
帮助我变得更有用!请点击👍或👎在每条评论上告诉我它是否有帮助。
Original comment in English

Hey @HibiKier - I've reviewed your changes - here's some feedback:

Overall Comments:

  • Consider logging or notifying superusers about admin ban attempts on the bot instead of automatically banning the admin. This could prevent potential abuse and confusion.
  • The code improvements, such as more descriptive ban duration messages and refactoring, are good. However, the change in behavior for admin actions might need further discussion.
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟡 Complexity: 1 issue found
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment to tell me if it was helpful.

@@ -160,7 +160,9 @@ async def _(
duration: Match[int],
group_id: Match[str],
):
user_id = None
user_id = ""
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

issue (complexity): 考虑重构禁令功能以改善代码结构和可读性。

禁令功能确实随着反向禁令保护功能的添加变得更加复杂。虽然此功能对于防止滥用至关重要,但我们可以改进代码结构以增强可读性和可维护性。以下是一些建议:

  1. 将反向禁令逻辑提取到一个单独的函数中:
def handle_reverse_ban(session, bot, gid, arparma):
    if not user_id or user_id == bot.self_id and session.id1 not in bot.config.superusers:
        duration = 30
        logger.info(
            f"尝试ban {BotConfig.self_nickname} 反被拿下",
            arparma.header_result,
            session=session,
        )
        return session.id1, duration, "半 分钟"
    return None, None, None

# 在主函数中:
reverse_ban_user, reverse_ban_duration, reverse_ban_text = handle_reverse_ban(session, bot, gid, arparma)
if reverse_ban_user:
    await BanManage.ban(reverse_ban_user, gid, reverse_ban_duration, session, True)
    await MessageUtils.build_message([
        "倒反天罡,小小管理速速退下!对 ",
        At(flag="user", target=reverse_ban_user),
        f" 狠狠惩戒了一番,一脚踢进了小黑屋! 在里面乖乖呆 {reverse_ban_text}吧!",
    ]).finish(reply_to=True)
    return
  1. 简化主要禁令执行:
def execute_ban(user_id, gid, duration, session, is_superuser):
    BanManage.ban(user_id, gid, duration, session, is_superuser)
    logger.info(
        "管理员Ban" if not is_superuser else "超级用户Ban",
        arparma.header_result,
        session=session,
        target=f"{gid}:{user_id}",
    )

# 在主函数中:
execute_ban(user_id, gid, _duration, session, session.id1 in bot.config.superusers)
  1. 简化消息构建:
def construct_ban_message(user_id, user_result, duration_text):
    return [
        "对 ",
        At(flag="user", target=user_id) if isinstance(user_result, At) else user_id,
        f" 狠狠惩戒了一番,一脚踢进了小黑屋! 在里面乖乖呆 {duration_text} 吧!",
    ]

# 在主函数中:
await MessageUtils.build_message(construct_ban_message(user_id, user.result, _duration_text)).finish(reply_to=True)

这些更改将保持所有新功能,同时减少嵌套并改善代码的整体结构。主函数将更易于阅读和理解,提取的函数可以在需要时独立重用或测试。

Original comment in English

issue (complexity): Consider refactoring the ban function to improve code structure and readability.

The ban function has indeed become more complex with the addition of the reverse ban protection feature. While this feature is crucial for preventing abuse, we can improve the code structure to enhance readability and maintainability. Here are some suggestions:

  1. Extract the reverse ban logic into a separate function:
def handle_reverse_ban(session, bot, gid, arparma):
    if not user_id or user_id == bot.self_id and session.id1 not in bot.config.superusers:
        duration = 30
        logger.info(
            f"尝试ban {BotConfig.self_nickname} 反被拿下",
            arparma.header_result,
            session=session,
        )
        return session.id1, duration, "半 分钟"
    return None, None, None

# In the main function:
reverse_ban_user, reverse_ban_duration, reverse_ban_text = handle_reverse_ban(session, bot, gid, arparma)
if reverse_ban_user:
    await BanManage.ban(reverse_ban_user, gid, reverse_ban_duration, session, True)
    await MessageUtils.build_message([
        "倒反天罡,小小管理速速退下!对 ",
        At(flag="user", target=reverse_ban_user),
        f" 狠狠惩戒了一番,一脚踢进了小黑屋! 在里面乖乖呆 {reverse_ban_text}吧!",
    ]).finish(reply_to=True)
    return
  1. Simplify the main ban execution:
def execute_ban(user_id, gid, duration, session, is_superuser):
    BanManage.ban(user_id, gid, duration, session, is_superuser)
    logger.info(
        "管理员Ban" if not is_superuser else "超级用户Ban",
        arparma.header_result,
        session=session,
        target=f"{gid}:{user_id}",
    )

# In the main function:
execute_ban(user_id, gid, _duration, session, session.id1 in bot.config.superusers)
  1. Simplify the message construction:
def construct_ban_message(user_id, user_result, duration_text):
    return [
        "对 ",
        At(flag="user", target=user_id) if isinstance(user_result, At) else user_id,
        f" 狠狠惩戒了一番,一脚踢进了小黑屋! 在里面乖乖呆 {duration_text} 吧!",
    ]

# In the main function:
await MessageUtils.build_message(construct_ban_message(user_id, user.result, _duration_text)).finish(reply_to=True)

These changes will maintain all the new functionality while reducing nesting and improving the overall structure of the code. The main function will be easier to read and understand, and the extracted functions can be reused or tested independently if needed.

@HibiKier HibiKier mentioned this pull request Sep 30, 2024
HibiKier added a commit that referenced this pull request Sep 30, 2024
* ✨ 父级插件加载

* ✅ 添加测试:更新与添加插件 (#1594)

* ✅ 测试更新与添加插件

* ✅ Sourcery建议

* 👷 添加pytest

* 🎨 优化代码

* 🐛 bug修复

* 🐛修复添加插件返回403的问题 (#1595)

* 完善测试方法
* vscode测试配置
* 重构插件安装过程

* 🎨 修改readme

* Update README.md

* 🐛 修改bug与版本锁定

* 🐛 修复超级用户对群组功能开关

* 🐛 修复插件商店检查插件更新问题 (#1597)

* 🐛 修复插件商店检查插件更新问题

* 🐛 恶意命令检测问题

* 🐛 增加插件状态检查 (#1598)

* ✅ 优化测试用例

* 🐛 更改插件更新与安装逻辑

* 🐛 修复更新群组成员信息

* 🎨 代码优化

* 🚀 更新Dockerfile (#1599)

* 🎨 更新requirements

* ➕ 添加依赖aiocache

* ⚡ 添加github镜像

* ✨ 添加仓库目录多获取渠道

* 🐛 修复测试用例

* ✨ 添加API缓存

* 🎨 采取Sourcery建议

* 🐛 文件下载逻辑修改

* 🎨 优化代码

* 🐛 修复插件开关有时出现错误

* ✨ 重构自检ui

* 🐛 自检html修正

* 修复签到逻辑bug,并使代码更灵活以适应签到好感度等级配置 (#1606)

* 修复签到功能已知问题

* 修复签到功能已知问题

* 修改参数名称

* 修改uid判断

---------

Co-authored-by: HibiKier <[email protected]>

* 🎨 代码结构优化

* 🐛 私聊时修改插件时删除私聊帮助

* 🐛 过滤父插件

* 🐛 修复自检在ARM上的问题 (#1607)

* 🐛 修复自检在ARM上的问题

* ✅ 优化测试

* ✨ 支持mysql,psql,sqlite随机函数

* 🔧 VSCode配置修改

* 🔧 VSCode配置修改

* ✨ 添加金币排行

Co-Authored-By: HibiKier <[email protected]>

* 📝 修改README

Co-Authored-By: HibiKier <[email protected]>

* 🔨 提取GitHub相关操作 (#1609)

* 🔨 提取GitHub相关操作

* 🔨 重构API策略

* ✨ 签到/金币排行限制最大数量 (#1616)

* ✨ 签到/金币排行限制最大数量

* 🐛 修复超级用户id获取问题

* 🐛 修复路径解压与挂载 (#1619)

* 🐛 修复功能少时zhenxun帮助图片排序问题 (#1620)

* 🐛 签到文本适应 (#1622)

* 🐛 好感度排行提供默认值 (#1624)

* 🎈 优先使用github api (#1625)

* ✨ 重构帮助,限制普通用户查询管理插件 (#1626)

* 🐛 修复群权限与插件等级匹配 (#1627)

* ✨ 当管理员尝试ban真寻时将被反杀 (#1628)

* ✨ 群组发言时间检测提供开关配置 (#1630)

* 🐳 chore: 支持自动修改版本号 (#1629)

* 🎈 perf(github_utils): 支持github url下载遍历 (#1632)

* 🎈 perf(github_utils): 支持github url下载遍历

* 🐞 fix(http_utils): 修复一些下载问题

* 🦄 refactor(http_utils): 部分重构

* chore(version): Update version to v0.2.2-e6f17c4

---------

Co-authored-by: AkashiCoin <[email protected]>

* 🧪 test(auto_update): 修复测试用例 (#1633)

* 🐛 修复商店商品为空时报错 (#1634)

* 🐛 修复群权限与插件等级匹配 (#1635)

* ✨ message_build支持AtAll (#1639)

* 🎈 perf: 使用commit号下载插件 (#1641)

* 🎈 perf: 使用commit号下载插件

* chore(version): Update version to v0.2.2-f9c7360

---------

Co-authored-by: AkashiCoin <[email protected]>

* 🐳 chore: 修改运行检查触发路径 (#1642)

* 🐳 chore: 修改运行检查触发路径

* 🐳 chore: 添加tests目录

* ✨ 重构qq群事件处理 (#1643)

* 🐛 签到名称自适应 (#1644)

* 🎨  更新README (#1645)

* 🐛 fix(http_utils): 流式下载Content-Length错误 (#1647)

* 🐛 修复群组中帮助功能状态显示问题 (#1650)

* 🐛 修复群欢迎消息设置 (#1651)

* 🐛 修复webui下载后首次启动错误 (#1652)

* 🐛 修复webui下载后首次启动错误

* chore(version): Update version to v0.2.2-4a8ef85

---------

Co-authored-by: HibiKier <[email protected]>

* ✨ 移除默认图片文件夹:爬 (#1653)

* ✨ 安装/移除插件提供插件安装/卸载方法用于插件初始化 (#1654)

* ✨ 新增超级用户与管理员帮助模板 (#1655)

* ✨ 新增个人信息命令 (#1657)

* ✨ 修改个人信息菜单名称 (#1658)

* ✨ 新增插件商店api (#1659)

* ✨ 新增插件商店api

* chore(version): Update version to v0.2.2-7e15f20

---------

Co-authored-by: HibiKier <[email protected]>

* ✨ 将cd,block,count限制复原配置文件 (#1662)

* 🎨 修改README (#1663)

* 🎨 修改版本号 (#1664)

* 🎨 修改requirements (#1665)

---------

Co-authored-by: AkashiCoin <[email protected]>
Co-authored-by: fanyinrumeng <[email protected]>
Co-authored-by: AkashiCoin <[email protected]>
Co-authored-by: Elaga <[email protected]>
Co-authored-by: AkashiCoin <[email protected]>
Co-authored-by: HibiKier <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant