2
0

DslTest.kt 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. /*
  2. * Copyright 2019-2022 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/dev/LICENSE
  8. */
  9. package net.mamoe.mirai.mock.test
  10. import net.mamoe.mirai.contact.MemberPermission
  11. import net.mamoe.mirai.mock.MockActions
  12. import net.mamoe.mirai.mock.MockBotFactory
  13. import net.mamoe.mirai.mock.userprofile.MockMemberInfoBuilder
  14. import net.mamoe.mirai.mock.utils.NudgeDsl
  15. import net.mamoe.mirai.mock.utils.broadcastMockEvents
  16. import net.mamoe.mirai.mock.utils.mockUploadAsOnlineAudio
  17. import net.mamoe.mirai.utils.ExternalResource.Companion.toExternalResource
  18. import java.io.File
  19. /*
  20. * This file only for showing MockDSL and how to use mock bot.
  21. * Not included in testing running
  22. */
  23. @Suppress("unused")
  24. internal suspend fun dslTest() {
  25. val bot = MockBotFactory.newMockBotBuilder().create()
  26. bot.addFriend(5, "OhMyFriend")
  27. bot.addGroup(1, "").apply {
  28. addMember(
  29. MockMemberInfoBuilder.create {
  30. uin(541)
  31. nameCard("Dmo")
  32. permission(MemberPermission.OWNER)
  33. }
  34. )
  35. }
  36. bot.addGroup(7, "")
  37. .appendMember(MockMemberInfoBuilder.create { // Kotlin
  38. uin(571)
  39. nameCard("Hi")
  40. permission(MemberPermission.ADMINISTRATOR)
  41. })
  42. .appendMember(
  43. MockMemberInfoBuilder.invoke() // Java, MockMemberInfoBuilder.builder() in java
  44. .uin(1654441)
  45. .nameCard("60")
  46. .permission(MemberPermission.MEMBER)
  47. .specialTitle("ST")
  48. .build()
  49. )
  50. // 群成员 70 说了一句话
  51. bot.getGroupOrFail(50).getOrFail(70).says("0")
  52. // 群成员 1 发了一条语音
  53. bot.getGroupOrFail(1).getOrFail(1).says { // Kotlin
  54. +File("helloworld.amr").toExternalResource().toAutoCloseable().mockUploadAsOnlineAudio(bot)
  55. }
  56. /*
  57. Java:
  58. bot.getGroupOrFail(1).getOrFail(1).says(() -> {
  59. return bot.uploadOnlineAudio(
  60. ExternalResource.toExternalResource(new File("")).toAutoCloseable()
  61. );
  62. });
  63. */
  64. broadcastMockEvents { // Required for kotlin
  65. // 50 拍了拍 bot 的 sys32
  66. bot.getGroupOrFail(5).getOrFail(50).nudges(bot) {
  67. action("拍了拍")
  68. suffix("sys32")
  69. }
  70. MockActions.fireNudge( // Java
  71. bot.getGroupOrFail(5).getOrFail(50),
  72. bot,
  73. /*new*/ NudgeDsl().action("拍了拍").suffix("sys32")
  74. )
  75. // 1 拍了拍 bot 的 sys32
  76. bot.nudgedBy(bot.getGroupOrFail(1).getOrFail(1)) {
  77. action("拍了拍")
  78. suffix("sys32")
  79. }
  80. // 群成员 2 修改了群名片
  81. bot.getGroupOrFail(1).getOrFail(2) nameCardChangesTo "Test"
  82. MockActions.fireNameCardChanged( // Java
  83. bot.getGroupOrFail(1).getOrFail(2), "Test"
  84. )
  85. // 群成员 2 被群主修改了头衔
  86. bot.getGroupOrFail(1).getOrFail(2) specialTitleChangesTo "管埋员"
  87. MockActions.fireSpecialTitleChanged( // Java
  88. bot.getGroupOrFail(1).getOrFail(2), "管埋员"
  89. )
  90. // 群主修改了群成员 2 的权限为 Administrator
  91. bot.getGroupOrFail(1).getOrFail(2) permissionChangesTo MemberPermission.ADMINISTRATOR
  92. MockActions.firePermissionChanged( // Java
  93. bot.getGroupOrFail(1).getOrFail(2),
  94. MemberPermission.ADMINISTRATOR
  95. )
  96. // 群主撤回了一条群员消息
  97. bot.getGroupOrFail(1).owner.recallMessage( // Kotlin & Java
  98. bot.getGroupOrFail(1).getOrFail(1) says { append("SB") }
  99. )
  100. }
  101. // 新的入群申请
  102. bot.getGroupOrFail(50).broadcastNewMemberJoinRequestEvent(
  103. requester = 3,
  104. requesterName = "Him188moe",
  105. message = "Hi!",
  106. ).reject(message = "Hello!")
  107. // 新的好友申请
  108. bot.broadcastNewFriendRequestEvent(
  109. requester = 1,
  110. requesterNick = "Karlatemp",
  111. fromGroup = 0,
  112. message = "さくらが落ちる",
  113. ).accept()
  114. bot.broadcastNewFriendRequestEvent(9, "", 0, "").reject()
  115. }