Skip to content
This repository has been archived by the owner on Jun 23, 2023. It is now read-only.

3.怎么发信息呢?( ω・* )ノ

DavidMeow edited this page Dec 17, 2020 · 5 revisions

1. 信息类型 (* ̄︶ ̄)

1. 明白信息发给谁 用来分析发送类型 MessageSendToType ヽ( ̄▽ ̄)ノ

MessageSendToType分为三类:
{ 好友Friend | 群Group | 私聊(指陌生人)Private }

2. 明白信息要发什么 内容 new T() (~ ̄▽ ̄)~

本框架仅提供了信息的V2接口,在继承特点上实现了以下几类

您可以使用简拼来快速调用信息.(°Д°)

  1. MsgV2 -> 最基础的信息封装类
  2. MsgV2_TxtMsg -> 文本信息封装类 简拼:M2T
  3. MsgV2_PicMsg -> 图片信息封装类 简拼:M2P
  4. MsgV2_VocMsg -> 语音信息封装类 简拼:M2V
  5. MsgV2_FwdMsg -> 转发信息封装类 简拼:M2F
  6. MsgV2_RplMsg -> 回复信息封装类 简拼:M2R
  7. MsgV2_JsnMsg -> JSON信息封装类 简拼:M2J
  8. MsgV2_XmlMsg -> XML信息封装类 简拼:M2X

3. 准备一个信息 ヽ( ̄▽ ̄)ノ

3.1 在您要发送的定义域内 输入 new空格
3.2 然后输入上面对应的信息类型 (例如:M2T)
3.3 然后按 TAB 再打上 (
3.4 输入一个QQ号的数字,然后点击 ,
3.5 输入 M回车或者TAB 然后输入 .
3.6 然后用小键盘上下选择你要发送的对象,例如 Friend
3.7 输入 , 然后输入一个字符串(你要发送的信息)
*一个要发送给好友文本信息就构造好了
例: new MsgV2_TxtMsg(123456,MessageSendToType.Friend,"123")

您可以使用C#特有的默认值构造语法来快速使用你想要的参数,例:

只选用picUrl参数:

new MsgV2_PicMsg(  
   123,  
   MessageSendToType.Friend,  
   picUrl:"http://..."   
)

是不是非常方便~( • ̀ω•́ )✧

4.当上述准备就绪后.(`・ω・´)

4.1 在消息后面调用 .Send(); 方法 d(´ω`*)
4.2 将方法前面添加 await 算符 ヽ(・ω・´メ)
4.3 将定义域方法改为 async void (不获取返回值)
4.3.1 将定义域方法改为 async Task<string> 并且 return 刚才的值 (获取返回值)
例: await new MsgV2_TxtMsg(123456,MessageSendToType.Friend,"123").Send();

发送实例: (我写在了群At信息的处理函数中,您需要根据情况选择自己的定义域)(*・ω< ) 

没有任何规定群聊只能响应群信息,私聊只能响应私聊信息.ヾ(o・ω・)ノ

收发动作没有任何关联,根据您的业务代码自己规定.(`・ω・´)

_gif3

5.已发送信息之后

5.1 如果您不需要检测发送状态,那么您可以空掉await算符前面的内容,也可以使用弃元_来丢弃参数;φ(>ω<)
5.2 您可以使用JObject.Parse方法来高效的判断内部的序列内容,(框架自带Newtonsoft)(
/ω\*)
5.3 关于返回的序列内容请参见IOT/OPQ官方wiki的信息返回内容 点这


2. 封装的信息类型 o(´^`)o

必填参数 | 可选参数*

1. MsgV2 <= object

属性组
+ long ToUserUid -- [long SendTo]
+ int SendToType -- [MessageSendToType sendToType]
+ string SendMsgType -- [MessageSendType sendMsgType]
+ string Content -- [string Content]
+ long GroupID -- [long GroupId]
方法组
+ 构造(long,MessageSendToType,MessageSendType,string,long)
+ Task<string> Send()

2. MsgV2_TxtMsg <= MsgV2

属性组
属组没有公开的或私有的属性
方法组
+ 构造(long,MessageSendToType,string,GroupId*,atqq*)

3. MsgV2_PicMsg <= MsgV2

属性组(任选其一)
+ string PicUrl -- [string picUrl]
+ string PicPath -- [string picPath]
+ string PicMd5s -- [string PicMd5s]
方法组
+ 构造(long,MessageSendToType,string*,string*,string*,string*,long*,long*)

4. MsgV2_VocMsg <= MsgV2

属性组(任选其一)
+ string VoiceUrl -- [string voiceUrl]
+ string VoicePath -- [string voicePath]
方法组
+ 构造(long,MessageSendToType,string*,string*,long*,long*)

5. MsgV2_FwdMsg <= MsgV2

属性组
+ string ForwordBuf -- [string forwordBuf]
+ string ForwordField -- [string forwordField]
方法组
+ 构造(long,MessageSendToType,string,string,long*,long*)

6. MsgV2_RplMsg <= MsgV2

属性组
::inner Class replayInfo::
+ long MsgSeq -- [string msgSeq]
+ long MsgTime -- [string msgTime]
+ long UserID -- [string userID]
+ string rawContent -- [string rawContent]
::outer Class::
方法组
+ 构造(long,replayInfo)
+ 构造(long,long,long,long,string)

7. MsgV2_JsnMsg <= MsgV2

属性组
属组没有公开的或私有的属性
方法组
+ 构造(long,MessageSendToType,string,long*,long*)

8. MsgV2_XmlMsg <= MsgV2

属性组
属组没有公开的或私有的属性
方法组
+ 构造(long,MessageSendToType,string,long*,long*)

既然你已经学会了如何构造和发送信息啦,那我们一起尝试做个复读机?(^▽^)

Clone this wiki locally