发送消息

参考文档

现在一般使用 MessageSegment 来使用/拼接消息

加载需要的模块

如果用不到的 就别加载(比如Message)

  1. from nonebot import on_command
  2. from nonebot.adapters.onebot.v11 import Bot, GroupMessageEvent, MessageSegment
  3. from nonebot.adapters.onebot.v11.message import Message
  4. import base64

以普通的on_command为例

  1. test = on_command("test", priority=99, block=False)
  2. @test.handle()
  3. async def handle_test(bot: Bot, event: GroupMessageEvent):
  4. # 祖传CQ码 用Message发送 现在基本不用了
  5. msg = Message("[CQ:face,id=123]")
  6. # 文字
  7. msg = MessageSegment.text("hello world")
  8. msg = MessageSegment.text("hello \nworld")
  9. # 图片 网络/本地/base64
  10. msg = MessageSegment.image("http://xx.com/1.png")
  11. # 绝对文件路径, 可以使用pathlib.Path(img_path).as_uri()
  12. msg = MessageSegment.image(r"file:///H:/test.jpg")
  13. image_data = "" # rb格式读取图片数据 xxfile.read()
  14. msg = MessageSegment.image(
  15. f"base64://{base64.b64encode(image_data).decode()}")
  16. # json 具体看onebot文档
  17. # msg = MessageSegment.json('{\"app\": \"com.tencent.miniapp"&#44...\"}')
  18. # 语音 网络/本地
  19. msg = MessageSegment.record("http://xx.com/1.mp3") # 还没测 其他参见图片 需要ffmpeg(在PATH配置cq自动处理)转amr或者silk
  20. # 匿名消息
  21. msg = MessageSegment.anonymous("hello") # 还没测
  22. # @at
  23. msg = MessageSegment.at(10086) # qq为all代表全体
  24. # node
  25. msg = MessageSegment.node(100) # 需要消息id 还没试
  26. # node_custom
  27. messages = []
  28. msg = MessageSegment.node_custom(nickname="自定义发送者" ,user_id=435826135,content= MessageSegment.text("hello"))
  29. messages.append(msg)
  30. await bot.send_group_forward_msg(group_id=491207941, messages=messages) # 合并转发自定义消息们
  31. # 合并转发 forward
  32. msg = MessageSegment.forward(100) # 消息id 还没试
  33. messages.append(msg)
  34. await bot.send_group_forward_msg(group_id=491207941, messages=messages)
  35. # !!! 回复 reply 目前不行
  36. # msg = MessageSegment.reply(text="test",qq=435826135)
  37. # 骰子 dice
  38. # qq表情 face
  39. msg = MessageSegment.face(123)
  40. # music
  41. # share
  42. # msg = MessageSegment.share(url="http://baidu.com", title="百度") # 失败了 可能会被封控
  43. # 发送群消息(在本节不是重点)
  44. bot.send_group_msg(group_id=event.group_id, message=msg)

消息拼接

直接拼就好啦

  1. ...
  2. msg = msg1 + msg2
  3. bot.send(msg)
  4. msg1 = MessageSegment.text("hello world")
  5. msg2 = MessageSegment.image("http://xx.com/1.png")
  6. msg = msg1+msg2
  7. bot.send_group_msg(group_id=event.group_id, message=msg)