Migrate UsernameSaver to new Plugin structure
This commit is contained in:
parent
b6257b9189
commit
69c3896c57
6 changed files with 69 additions and 0 deletions
21
backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts
Normal file
21
backend/src/plugins/UsernameSaver/UsernameSaverPlugin.ts
Normal file
|
@ -0,0 +1,21 @@
|
|||
import { zeppelinPlugin } from "../ZeppelinPluginBlueprint";
|
||||
import { UsernameHistory } from "src/data/UsernameHistory";
|
||||
import { Queue } from "src/Queue";
|
||||
import { UsernameSaverPluginType } from "./types";
|
||||
import { MessageCreateEvt } from "./events/MessageCreateEvt";
|
||||
import { VoiceChannelJoinEvt } from "./events/VoiceChannelJoinEvt";
|
||||
|
||||
export const UsernameSaverPlugin = zeppelinPlugin<UsernameSaverPluginType>()("username_saver", {
|
||||
// prettier-ignore
|
||||
events: [
|
||||
MessageCreateEvt,
|
||||
VoiceChannelJoinEvt,
|
||||
],
|
||||
|
||||
onLoad(pluginData) {
|
||||
const { state, guild } = pluginData;
|
||||
|
||||
state.usernameHistory = new UsernameHistory();
|
||||
state.updateQueue = new Queue();
|
||||
},
|
||||
});
|
11
backend/src/plugins/UsernameSaver/events/MessageCreateEvt.ts
Normal file
11
backend/src/plugins/UsernameSaver/events/MessageCreateEvt.ts
Normal file
|
@ -0,0 +1,11 @@
|
|||
import { usernameEvent } from "../types";
|
||||
import { updateUsername } from "../updateUsername";
|
||||
|
||||
export const MessageCreateEvt = usernameEvent({
|
||||
event: "messageCreate",
|
||||
|
||||
async listener(meta) {
|
||||
if (meta.args.message.author.bot) return;
|
||||
meta.pluginData.state.updateQueue.add(() => updateUsername(meta.pluginData, meta.args.message.author));
|
||||
},
|
||||
});
|
|
@ -0,0 +1,11 @@
|
|||
import { usernameEvent } from "../types";
|
||||
import { updateUsername } from "../updateUsername";
|
||||
|
||||
export const VoiceChannelJoinEvt = usernameEvent({
|
||||
event: "voiceChannelJoin",
|
||||
|
||||
async listener(meta) {
|
||||
if (meta.args.member.bot) return;
|
||||
meta.pluginData.state.updateQueue.add(() => updateUsername(meta.pluginData, meta.args.member.user));
|
||||
},
|
||||
});
|
12
backend/src/plugins/UsernameSaver/types.ts
Normal file
12
backend/src/plugins/UsernameSaver/types.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
import { BasePluginType, eventListener } from "knub";
|
||||
import { UsernameHistory } from "src/data/UsernameHistory";
|
||||
import { Queue } from "src/Queue";
|
||||
|
||||
export interface UsernameSaverPluginType extends BasePluginType {
|
||||
state: {
|
||||
usernameHistory: UsernameHistory;
|
||||
updateQueue: Queue;
|
||||
};
|
||||
}
|
||||
|
||||
export const usernameEvent = eventListener<UsernameSaverPluginType>();
|
12
backend/src/plugins/UsernameSaver/updateUsername.ts
Normal file
12
backend/src/plugins/UsernameSaver/updateUsername.ts
Normal file
|
@ -0,0 +1,12 @@
|
|||
import { User } from "eris";
|
||||
import { PluginData } from "knub";
|
||||
import { UsernameSaverPluginType } from "./types";
|
||||
|
||||
export async function updateUsername(pluginData: PluginData<UsernameSaverPluginType>, user: User) {
|
||||
if (!user) return;
|
||||
const newUsername = `${user.username}#${user.discriminator}`;
|
||||
const latestEntry = await pluginData.state.usernameHistory.getLastEntry(user.id);
|
||||
if (!latestEntry || newUsername !== latestEntry.username) {
|
||||
await pluginData.state.usernameHistory.addEntry(user.id, newUsername);
|
||||
}
|
||||
}
|
|
@ -1,10 +1,12 @@
|
|||
import { UtilityPlugin } from "./Utility/UtilityPlugin";
|
||||
import { LocateUserPlugin } from "./LocateUser/LocateUserPlugin";
|
||||
import { ZeppelinPluginBlueprint } from "./ZeppelinPluginBlueprint";
|
||||
import { UsernameSaverPlugin } from "./UsernameSaver/UsernameSaverPlugin";
|
||||
|
||||
// prettier-ignore
|
||||
export const guildPlugins: Array<ZeppelinPluginBlueprint<any>> = [
|
||||
LocateUserPlugin,
|
||||
UsernameSaverPlugin,
|
||||
UtilityPlugin,
|
||||
];
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue