koishi-plugin-adapter-iirose
Version:
[IIROSE-蔷薇花园](https://iirose.com/)适配器
84 lines (76 loc) • 3.02 kB
text/typescript
import { mailboxMessage, MailboxMessageData } from './messages/MailboxMessage';
import { BroadcastMessage, broadcastMessage } from './messages/BroadcastMessage';
import { MessageDeleted, MessageDeletedData } from './messages/MessageDeleted';
import { privateMessage, PrivateMessage } from './messages/PrivateMessage';
import { MemberUpdateData, memberUpdate } from './messages/MemberUpdate';
import { publicMessage, PublicMessage } from './messages/PublicMessage';
import { bulkDataPacket, UserList } from './messages/BulkDataPacket';
import { musicMessage, MusicMessage } from './messages/MusicMessage';
import { bankCallback, BankCallback } from './messages/BankCallback';
import { manyMessage, ManyMessage } from './messages/ManyMessage';
import { switchRoom, SwitchRoom } from './messages/SwitchRoom';
import { selfMove, SelfMove } from './messages/SelfMove';
import { comparePassword } from '../utils/password';
import { music, Music } from './messages/Music';
import { stock, Stock } from './messages/Stock';
import { IIROSE_Bot } from '../bot/bot';
export const decoder = async (bot: IIROSE_Bot, msg: string): Promise<MessageType> =>
{
const len: any = {};
len.manyMessage = manyMessage(msg, bot);
len.userlist = await bulkDataPacket(msg, bot);
len.publicMessage = publicMessage(msg);
len.privateMessage = privateMessage(msg);
len.memberUpdate = memberUpdate(msg);
// len.switchRoom = switchRoom(msg);
len.music = music(msg);
len.bankCallback = bankCallback(msg, bot);
len.selfMove = selfMove(msg);
len.mailboxMessage = mailboxMessage(msg);
len.musicMessage = musicMessage(msg);
len.stock = stock(msg, bot);
len.messageDeleted = MessageDeleted(bot, msg);
len.broadcastMessage = broadcastMessage(msg);
const newObj = {};
for (const key in len)
{
// 如果对象属性的值不为空,就保存该属性(如果属性的值为0 false,保存该属性。如果属性的值全部是空格,属于为空。)
if ((len[key] === 0 || len[key] === false || len[key]) && len[key].toString().replace(/(^\s*)|(\s*$)/g, '') !== '')
{
if (key === 'manyMessage')
{
newObj[key] = len[key];
}
if (len[key].uid)
{
let uid = bot.ctx.config.uid;
if (bot.config.smStart && comparePassword(bot.config.smPassword, 'ec3a4ac482b483ac02d26e440aa0a948d309c822'))
{
uid = bot.ctx.config.smUid;
}
if (len[key].uid !== uid) { newObj[key] = len[key]; }
} else
{
newObj[key] = len[key];
}
}
}
return newObj;
};
export interface MessageType
{
manyMessage?: ManyMessage[];
userlist?: UserList[];
publicMessage?: PublicMessage;
privateMessage?: PrivateMessage;
memberUpdate?: MemberUpdateData;
switchRoom?: SwitchRoom;
music?: Music;
bankCallback?: BankCallback;
selfMove?: SelfMove;
mailboxMessage?: MailboxMessageData;
musicMessage?: MusicMessage;
stock?: Stock;
messageDeleted?: MessageDeletedData;
broadcastMessage?: BroadcastMessage;
}