MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接
    1. 主页
    2. Karlatemp
    3. 帖子
    • 资料
    • 关注 0
    • 粉丝 13
    • 主题 16
    • 帖子 389
    • 最佳 50
    • 有争议的 1
    • 群组 3

    Karlatemp 发布的帖子

    • RE: 【每日沙雕图】沙雕小别墅

      f5b6c432-f1f1-449d-8a83-89460712bfd3-XC1[{JH]QGC82MEN~K%XCRI.jpg
      e68ebe0d-3872-48c8-84c4-8b5b4b851c48-LT3.jpg
      158ec3f0-6286-4985-9cdb-b57e4f197130-B7YYC.jpg

      发布在 摸鱼区
      Karlatemp
      Karlatemp
    • RE: forwardMessage的使用

      经典有报错不给报错信息

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 请教一个自定义子命令别名的问题

      目前没有

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 请教一个自定义子命令别名的问题

      jvm注解值本来只能给常量,建议寻找java相关的书籍阅读

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 登录时偶现的问题

      https://github.com/mamoe/mirai/issues/1498

      SugarFatFree created this issue in mamoe/mirai

      closed 登录失败报错 java.lang.StackOverflowError: null #1498

      发布在 BUG反馈
      Karlatemp
      Karlatemp
    • RE: 监控Redis?

      轮训(

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 在插件中嵌入ktor失败?

      尝试使用与 mirai-core-api 所使用的 ktor 版本一致的ktor版本

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 在插件中嵌入ktor失败?

      看上去像版本冲突

      发布在 开发交流
      Karlatemp
      Karlatemp
    • GitHub PullRequest 自动审核合并

      众所周知, github actions 可以完成很多自动化任务, 比如代码持续CI, 版本发布自动化, new issue 内容检查等.

      当然,github actions 也可以用作 PR 自动审查合并, 不过, 要完成这些需要一些额外的配置..


      首先需要知道的是, on: pull_request 的 workflow 是只有 readonly 的权限的, 这也就意味着通过 on: pull_request 发起的 workflow 除了读取已公开的内容之外什么都干不了. 包括访问 ${{ secrets.XXXX }} 也是不被允许的

      需要完成自动合并, 需要更高权限(也意味着更危险的) workflow, pull_request_target

      pull_request_target 与 pull_request 的用法基本一致, 但是主要有以下的区别

      actions/checkout@v2 会签出到被 PR 的分支(也就是源仓库的内容), 而不是经过 PR 修改后的内容

      pull_request_target 拥有 write 权限, 可以写入源仓库, 访问 ${{ secrets.XXX }} (这是 pull_request 所不允许的)


      知道以上的主要区别之后就可以编写 PR 自动审查了

      首先需要获取源仓库的内容 (当然绝对不可以直接 checkout!!!)

      可以选择在当前目录来获取修改,或者创建一个新文件夹来获取修改

      # Way 1
      - uses: actions/checkout@v2
        with:
          ref: pull/${{ github.event.pull_request.number }}/head
          path: the_pr
      
      # Way 2
      - run: git fetch origin pull/$PR_NUM/head:THE_PR
        env:
          PR_NUM: ${{ github.event.pull_request.number }}
      

      然后是提取该 PR 的修改

      BASE_SHA: ${{ github.event.pull_request.base.sha }}
      
      git rev-list --count "$BASE_SHA..THE_PR" > tmp/count
      cat tmp/count
      git --no-pager diff "$BASE_SHA..THE_PR" --no-color --output tmp/change-diff
      git --no-pager diff "$BASE_SHA..THE_PR" --name-only --output tmp/name-changed
      

      此时

      • tmp/name-changed 存储着该 PR 修改的全部文件的文件路径
      • tmp/change-diff 则为 PR 与 base 的 diff 文件
      • tmp/count 为一个数字, 该数字代表 base 与 pr 直接相差的 commit 数量

      在进行一系列 PR 审核之后, 需要将审核结果返回出去 (Merge 或者 Reject(Request change))

      需要用到的两个 REST API 为 Create a review for a pull request, Merge a pull request

      通过 Create a review for a pull request 可以对一个 PR 进行自动审查, 可以是 Approve 或者 Reject(Request changes), 亦或者只是简单的评论 Comment

      然后就可以通过 Merge a pull request 完成全自动 PR 合并了, 唯一需要给定的参数 sha 为 PullRequest 的最后一个 commit 的 id, 可以通过执行 git rev-parse THE_PR 获得该参数的值


      额外话: 使用 ${{ secrets.GITHUB_TOKEN }} 合并后, 不会触发 workflow on: push
      如果需要 merge commit 也执行 on: push 的, 请使用 ${{ secrets.PR_REVIEWER_TOKEN }} 代替 GITHUB_TOKEN


      参考与应用

      • auto-review-and-merge.yml
      • check-pr.js
      发布在 技术交流板块
      Karlatemp
      Karlatemp
    • RE: 在插件中嵌入ktor失败?

      请确定打包的插件携带了 ktor-server-netty 等必要依赖,你可能需要 https://github.com/project-mirai/mirai-slf4j-bridge 来开启全部日志

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: LuckPerms - Mirai - 高级权限服务插件

      @snowmoonss 详细逻辑参考 https://github.com/Karlatemp/LuckPerms-Mirai/blob/master/src/main/kotlin/io/github/karlatemp/luckperms/mirai/context/MiraiCalculator.kt

      发布在 插件发布
      Karlatemp
      Karlatemp
    • RE: LuckPerms - Mirai - 高级权限服务插件

      /lp user 是固定 sub command, 并没有 user=123456789, 因为数据库用户名就是 QQ号

      eg /lp user 1234567890 info

      发布在 插件发布
      Karlatemp
      Karlatemp
    • RE: 插件能用socket吗
      import java.io.*
      fun main() {
      val socket = Socket("127.0.0.1", 10086)
      socket.getOutputStream().write("HelloWorld!".getBytes(Charsets.UTF8))
      socket.getOutputStream().flush()
      
      socket.getInputStream().read() // read response
      }
      
      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 插件能用socket吗

      Why not

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: gif图片手机端需要点开才能动

      根据 直接用qq发送 你应该检查你的 gif 格式

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 怎样给 mirai-console 的插件加入图形界面?

      https://openjfx.io/openjfx-docs/#gradle

      你干嘛不看文档

      发布在 开发交流
      Karlatemp
      Karlatemp
    • RE: 话说,论坛将来会支持内容折叠操作吗?

      可以通过给 https://github.com/KasukuSakura/nodebb-plugin-mirai-forum 发 PR 来帮助我们

      发布在 摸鱼区
      Karlatemp
      Karlatemp
    • RE: 【每日沙雕图】沙雕小别墅

      5af3c11e-ba5e-4a27-9e02-702d30150b7c-image.png

      发布在 摸鱼区
      Karlatemp
      Karlatemp
    • 1
    • 2
    • 5
    • 6
    • 7
    • 8
    • 9
    • 19
    • 20
    • 7 / 20