Merge pull request #68 from DarkView/k30_usernameSaver
[K30] Migrated UsernameSaver
This commit is contained in:
commit
2be4c8eac4
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,11 +1,13 @@
|
||||||
import { UtilityPlugin } from "./Utility/UtilityPlugin";
|
import { UtilityPlugin } from "./Utility/UtilityPlugin";
|
||||||
import { LocateUserPlugin } from "./LocateUser/LocateUserPlugin";
|
import { LocateUserPlugin } from "./LocateUser/LocateUserPlugin";
|
||||||
import { ZeppelinPluginBlueprint } from "./ZeppelinPluginBlueprint";
|
import { ZeppelinPluginBlueprint } from "./ZeppelinPluginBlueprint";
|
||||||
|
import { UsernameSaverPlugin } from "./UsernameSaver/UsernameSaverPlugin";
|
||||||
import { WelcomeMessagePlugin } from "./WelcomeMessage/WelcomeMessagePlugin";
|
import { WelcomeMessagePlugin } from "./WelcomeMessage/WelcomeMessagePlugin";
|
||||||
|
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
export const guildPlugins: Array<ZeppelinPluginBlueprint<any>> = [
|
export const guildPlugins: Array<ZeppelinPluginBlueprint<any>> = [
|
||||||
LocateUserPlugin,
|
LocateUserPlugin,
|
||||||
|
UsernameSaverPlugin,
|
||||||
UtilityPlugin,
|
UtilityPlugin,
|
||||||
WelcomeMessagePlugin,
|
WelcomeMessagePlugin,
|
||||||
];
|
];
|
||||||
|
|
Loading…
Add table
Reference in a new issue