changed alter to model
This commit is contained in:
parent
21927ae359
commit
87e8a4295d
16 changed files with 205 additions and 149 deletions
|
@ -1,10 +1,11 @@
|
||||||
import { AlterModel } from "../models/alterModel"
|
import { Database } from "sqlite3";
|
||||||
import { AlterRepo } from "../repositories/AlterRepo"
|
import MemberModel from "../models/MemberModel"
|
||||||
|
import { MemberRepo } from "../repositories/MemberRepo"
|
||||||
|
|
||||||
export async function avatarAlterChange(userId: string, args: string[]){
|
export async function avatarMemberChange(userId: string, args: string[], database: Database){
|
||||||
const alterRepo = new AlterRepo();
|
const memberRepo = new MemberRepo(database);
|
||||||
let userAlters : AlterModel[] = [];
|
let userAlters : MemberModel[] = [];
|
||||||
await alterRepo.getAltersByUserId(userId).then( result => userAlters = result )
|
await memberRepo.getAltersByUserId(userId).then( result => userAlters = result )
|
||||||
|
|
||||||
let userAltersNames : string[] = [];
|
let userAltersNames : string[] = [];
|
||||||
userAlters.forEach(alter => userAltersNames.push(alter.name));
|
userAlters.forEach(alter => userAltersNames.push(alter.name));
|
||||||
|
@ -14,7 +15,7 @@ export async function avatarAlterChange(userId: string, args: string[]){
|
||||||
userAlters.forEach( alter => {
|
userAlters.forEach( alter => {
|
||||||
if (alter.name == args[0]) {
|
if (alter.name == args[0]) {
|
||||||
alter.profile_pic_url = args[1];
|
alter.profile_pic_url = args[1];
|
||||||
alterRepo.editAlter(alter)
|
memberRepo.editAlter(alter)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
|
@ -1,19 +1,20 @@
|
||||||
import { AlterRepo } from "../repositories/AlterRepo"
|
import { MemberRepo } from "../repositories/MemberRepo"
|
||||||
import { AlterModel } from "../models/alterModel"
|
import MemberModel from "../models/MemberModel"
|
||||||
|
import { Database } from "sqlite3";
|
||||||
|
|
||||||
export async function colorAlterChange(userId: string, args: string[]){
|
async function colorMemberChange(userId: string, args: string[], database: Database){
|
||||||
const alterRepo = new AlterRepo();
|
const memberRepo = new MemberRepo(database);
|
||||||
const regexHex = /^#[0-9A-F]{6}$/i;
|
const regexHex = /^#[0-9A-F]{6}$/i;
|
||||||
|
|
||||||
if (args.length == 2 && regexHex.test(args[1])){
|
if (args.length == 2 && regexHex.test(args[1])){
|
||||||
const alterName = args[0];
|
const alterName = args[0];
|
||||||
const alterColor = args[1];
|
const alterColor = args[1];
|
||||||
|
|
||||||
let alters: AlterModel[];
|
let alters: MemberModel[];
|
||||||
await alterRepo.getAltersByUserId(userId).then( result => alters = result ) // fetching alters from user.
|
await memberRepo.getAltersByUserId(userId).then( result => alters = result ) // fetching alters from user.
|
||||||
if (alters.length == 0) return "This user has no Members." // checking if returned array is at least not 0, if len 0, then return.
|
if (alters.length == 0) return "This user has no Members." // checking if returned array is at least not 0, if len 0, then return.
|
||||||
|
|
||||||
let alterToEdit: AlterModel;
|
let alterToEdit: MemberModel;
|
||||||
alters.forEach( alter => {
|
alters.forEach( alter => {
|
||||||
if (alter.name == alterName) {
|
if (alter.name == alterName) {
|
||||||
alterToEdit = alter;
|
alterToEdit = alter;
|
||||||
|
@ -21,10 +22,12 @@ export async function colorAlterChange(userId: string, args: string[]){
|
||||||
})
|
})
|
||||||
|
|
||||||
alterToEdit.color = alterColor;
|
alterToEdit.color = alterColor;
|
||||||
alterRepo.editAlter(alterToEdit)
|
memberRepo.editAlter(alterToEdit)
|
||||||
|
|
||||||
return "The Member's colour has been changed."
|
return "The Member's colour has been changed."
|
||||||
}
|
}
|
||||||
|
|
||||||
return "Error: Insufficent Arguments"
|
return "Error: Insufficent Arguments"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default colorMemberChange
|
|
@ -1,18 +1,19 @@
|
||||||
import { AlterRepo } from "../repositories/AlterRepo";
|
import { Database } from "sqlite3";
|
||||||
import { AlterModel } from "models/alterModel"
|
import { MemberRepo } from "../repositories/MemberRepo";
|
||||||
|
import MemberModel from "models/MemberModel"
|
||||||
|
|
||||||
export async function createAlter(userId: string, args: string[]){
|
async function createMember(userId: string, args: string[], database: Database){
|
||||||
const alterRepo = new AlterRepo();
|
const memberRepo = new MemberRepo(database);
|
||||||
|
|
||||||
const model: AlterModel = {
|
const model: MemberModel = {
|
||||||
owner: userId,
|
owner: userId,
|
||||||
name: args[0],
|
name: args[0],
|
||||||
prefix: args[1],
|
prefix: args[1],
|
||||||
profile_pic_url: "https://tse3.mm.bing.net/th?id=OIP.yte7rRnbCnWi1giriwTOvwHaHa&pid=15.1"
|
profile_pic_url: "https://tse3.mm.bing.net/th?id=OIP.yte7rRnbCnWi1giriwTOvwHaHa&pid=15.1"
|
||||||
}
|
}
|
||||||
|
|
||||||
let userAlters: AlterModel[];
|
let userAlters: MemberModel[];
|
||||||
await alterRepo.getAltersByUserId(userId).then(result => userAlters = result)
|
await memberRepo.getAltersByUserId(userId).then(result => userAlters = result)
|
||||||
|
|
||||||
let alterTags : string[] = [];
|
let alterTags : string[] = [];
|
||||||
userAlters.forEach( alter => {
|
userAlters.forEach( alter => {
|
||||||
|
@ -30,7 +31,7 @@ export async function createAlter(userId: string, args: string[]){
|
||||||
&& args[1] != "text"
|
&& args[1] != "text"
|
||||||
&& !alterNames.includes(args[0])) {
|
&& !alterNames.includes(args[0])) {
|
||||||
|
|
||||||
alterRepo.addAlterForUser(model);
|
memberRepo.addAlterForUser(model);
|
||||||
return {message: "Member < " + model.name + " > has been succefully created", code: 0}
|
return {message: "Member < " + model.name + " > has been succefully created", code: 0}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -52,3 +53,5 @@ export async function createAlter(userId: string, args: string[]){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default createMember;
|
|
@ -1,24 +0,0 @@
|
||||||
import { AlterRepo } from "../repositories/AlterRepo"
|
|
||||||
import { AlterModel } from "../models/alterModel"
|
|
||||||
|
|
||||||
export async function deleteAlter(userId: string, args: string[]) {
|
|
||||||
const alterRepo = new AlterRepo();
|
|
||||||
let success: boolean = false;
|
|
||||||
|
|
||||||
if (args.length === 1) {
|
|
||||||
let alters: AlterModel[];
|
|
||||||
await alterRepo.getAltersByUserId(userId).then(result => alters = result )
|
|
||||||
alters.forEach(alter => {
|
|
||||||
if (alter.name == args[0]) {
|
|
||||||
alterRepo.deleteAlter(alter.id)
|
|
||||||
success = true;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if (success) {
|
|
||||||
return "Member has been deleted"
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "Failed to delete Member"
|
|
||||||
}
|
|
||||||
}
|
|
25
src/commands/deleteMember.ts
Normal file
25
src/commands/deleteMember.ts
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
import { MemberRepo } from "../repositories/MemberRepo"
|
||||||
|
import MemberModel from "../models/MemberModel"
|
||||||
|
import { Database } from "sqlite3";
|
||||||
|
|
||||||
|
export async function deleteMember(userId: string, args: string[], database: Database) {
|
||||||
|
const memberRepo = new MemberRepo(database);
|
||||||
|
let success: boolean = false;
|
||||||
|
|
||||||
|
if (args.length === 1) {
|
||||||
|
let alters: MemberModel[];
|
||||||
|
await memberRepo.getAltersByUserId(userId).then(result => alters = result )
|
||||||
|
alters.forEach(alter => {
|
||||||
|
if (alter.name == args[0]) {
|
||||||
|
memberRepo.delete(alter.id)
|
||||||
|
success = true;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if (success) {
|
||||||
|
return "Member has been deleted"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "Failed to delete Member"
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,16 +0,0 @@
|
||||||
import { AlterRepo } from "../repositories/AlterRepo"
|
|
||||||
import { AlterModel } from "../models/alterModel"
|
|
||||||
import { tableConstructor } from '../utils/tableConstructor'
|
|
||||||
|
|
||||||
export async function listAlters(userId: string) {
|
|
||||||
const alterRepo = new AlterRepo();
|
|
||||||
let alters: AlterModel[];
|
|
||||||
await alterRepo.getAltersByUserId(userId).then(result => { alters = result })
|
|
||||||
|
|
||||||
if (alters.length > 0 ) {
|
|
||||||
return tableConstructor(alters)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
return "No Members found for this user"
|
|
||||||
}
|
|
||||||
}
|
|
19
src/commands/listMember.ts
Normal file
19
src/commands/listMember.ts
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
import { MemberRepo } from "../repositories/MemberRepo"
|
||||||
|
import { tableConstructor } from '../utils/tableConstructor'
|
||||||
|
import { Database } from "sqlite3";
|
||||||
|
import MemberModel from "../models/MemberModel";
|
||||||
|
|
||||||
|
async function listMember(userId: string, database: Database) {
|
||||||
|
const memberRepo = new MemberRepo(database);
|
||||||
|
let alters: MemberModel[];
|
||||||
|
await memberRepo.getAltersByUserId(userId).then(result => { alters = result })
|
||||||
|
|
||||||
|
if (alters.length > 0 ) {
|
||||||
|
return tableConstructor(alters)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return "No Members found for this user"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default listMember
|
|
@ -1,8 +1,9 @@
|
||||||
import { File } from "revolt.js"
|
import { File } from "revolt.js"
|
||||||
import { createAlter } from "./createAlter"
|
import { Database } from "sqlite3"
|
||||||
import { avatarAlterChange } from "./avatarAlterChange"
|
import createMember from "./createMember"
|
||||||
|
import { avatarMemberChange } from "./avatarMemberChange"
|
||||||
|
|
||||||
export default async function migrateAlters(author: string, attachments: File[] | undefined, source: String) {
|
export default async function migrateAlters(author: string, attachments: File[] | undefined, source: String, database: Database) {
|
||||||
// source is not utilized for now, it is put as an argument in case the bot evolves further
|
// source is not utilized for now, it is put as an argument in case the bot evolves further
|
||||||
|
|
||||||
let file = attachments[0]
|
let file = attachments[0]
|
||||||
|
@ -24,9 +25,9 @@ export default async function migrateAlters(author: string, attachments: File[]
|
||||||
let name = element.name
|
let name = element.name
|
||||||
let avatar = element.avatar_url
|
let avatar = element.avatar_url
|
||||||
let brackets = element.brackets[0] + "text" + element.brackets[1]
|
let brackets = element.brackets[0] + "text" + element.brackets[1]
|
||||||
const createResult = await createAlter(author, [name, brackets])
|
const createResult = await createMember(author, [name, brackets], database)
|
||||||
if ( createResult.code === 0 ) {
|
if ( createResult.code === 0 ) {
|
||||||
await avatarAlterChange(author, [name, avatar])
|
await avatarMemberChange(author, [name, avatar], database)
|
||||||
}
|
}
|
||||||
let tupperStruct = {tupper: name, message: createResult}
|
let tupperStruct = {tupper: name, message: createResult}
|
||||||
|
|
29
src/index.ts
29
src/index.ts
|
@ -1,28 +1,37 @@
|
||||||
import { Client, Message } from "revolt.js";
|
import { Client, Message } from "revolt.js";
|
||||||
import { commandHandler } from "./utils/commandHandler"
|
import { commandHandler } from "./utils/commandHandler"
|
||||||
import { nonCommandHandler } from "./utils/nonCommandHandler"
|
import { nonCommandHandler } from "./utils/nonCommandHandler"
|
||||||
|
import { Database } from "sqlite3";
|
||||||
import config from "../config.json"
|
import config from "../config.json"
|
||||||
const client : Client = new Client({ eagerFetching: false });
|
|
||||||
|
|
||||||
|
const client : Client = new Client({ eagerFetching: false });
|
||||||
|
const db = new Database(config.databaseName);
|
||||||
|
|
||||||
client.on("ready", async () => {
|
client.on("ready", async () => {
|
||||||
console.info(`Gummed in as ${client.user.username}!`)
|
console.info(`logged in as ${client.user.username}!`)
|
||||||
client.user.edit({status : {text: config.prefix + " help for the help menu"}})
|
client.user.edit(
|
||||||
|
{
|
||||||
|
status : {
|
||||||
|
text: config.prefix + " help for the help menu"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
client.on("messageCreate", async (message: Message) => {
|
client.on("messageCreate", async (message: Message) => {
|
||||||
try{ if (!message.author) { await client.users.fetch(message.authorId) } }
|
try{ if (!message.author) { await client.users.fetch(message.authorId) } }
|
||||||
catch(e){console.log(e)}
|
catch(e){console.log(e)}
|
||||||
|
|
||||||
if (message.content === undefined) {return}
|
if (message.content === undefined) {return}
|
||||||
if (message.author?.bot) {}
|
if (message.author?.bot) {return}
|
||||||
|
|
||||||
|
// checks if the message's body starts with the prefix
|
||||||
|
if (message.content.startsWith(config.prefix)) {
|
||||||
|
commandHandler(message, db, config.prefix);
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
if (message.content.startsWith(config.prefix)) {
|
nonCommandHandler(message, db);
|
||||||
commandHandler(message, config.prefix);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
nonCommandHandler(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
export interface AlterModel {
|
interface MemberModel {
|
||||||
id?: number;
|
id?: number;
|
||||||
owner: string;
|
owner: string;
|
||||||
prefix: string;
|
prefix: string;
|
||||||
|
@ -6,3 +6,5 @@ export interface AlterModel {
|
||||||
profile_pic_url: string;
|
profile_pic_url: string;
|
||||||
color?: string;
|
color?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default MemberModel;
|
7
src/models/User.ts
Normal file
7
src/models/User.ts
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
interface UserModel {
|
||||||
|
id: number,
|
||||||
|
autoProxy: boolean,
|
||||||
|
autoProxyMember: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export default UserModel;
|
|
@ -1,19 +1,19 @@
|
||||||
import { Database } from 'sqlite3';
|
import { Database } from 'sqlite3';
|
||||||
import { AlterModel } from '../models/alterModel'
|
import MemberModel from '../models/MemberModel';
|
||||||
import config from "../../config.json"
|
|
||||||
|
|
||||||
export class AlterRepo {
|
export class MemberRepo {
|
||||||
db : Database
|
db : Database
|
||||||
constructor() {
|
|
||||||
this.db = new Database(config.databaseName);
|
constructor(database_instance: Database) {
|
||||||
this.db.run("CREATE TABLE IF NOT EXISTS alters (id INTEGER PRIMARY KEY AUTOINCREMENT, owner TEXT, prefix TEXT, name TEXT, profile_pic_url TEXT, color TEXT)")
|
this.db = database_instance;
|
||||||
|
this.db.run("CREATE TABLE IF NOT EXISTS alters (id INTEGER PRIMARY KEY AUTOINCREMENT, owner TEXT, prefix TEXT, name TEXT, profile_pic_url TEXT, color TEXT)");
|
||||||
}
|
}
|
||||||
|
|
||||||
async getAltersByUserId(userId : string) : Promise<AlterModel[]> {
|
async getAltersByUserId(userId : string) : Promise<MemberModel[]> {
|
||||||
const query : string = 'SELECT * FROM alters WHERE alters.owner = "' + userId + '"'
|
const query : string = 'SELECT * FROM alters WHERE alters.owner = "' + userId + '"'
|
||||||
|
|
||||||
let result: AlterModel[] = await new Promise((resolve, reject) => {
|
let result: MemberModel[] = await new Promise((resolve, reject) => {
|
||||||
this.db.all(query, (err, row: AlterModel[]) => {
|
this.db.all(query, (err, row: MemberModel[]) => {
|
||||||
if (err) { return reject(err)}
|
if (err) { return reject(err)}
|
||||||
else { return resolve(row) }
|
else { return resolve(row) }
|
||||||
})
|
})
|
||||||
|
@ -22,17 +22,17 @@ export class AlterRepo {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
addAlterForUser(alter: AlterModel){
|
addAlterForUser(alter: MemberModel){
|
||||||
this.db.run("INSERT INTO alters (owner, prefix, name, profile_pic_url, color) VALUES(?, ?, ?, ?, ?)",
|
this.db.run("INSERT INTO alters (owner, prefix, name, profile_pic_url, color) VALUES(?, ?, ?, ?, ?)",
|
||||||
[alter.owner, alter.prefix, alter.name, alter.profile_pic_url])
|
[alter.owner, alter.prefix, alter.name, alter.profile_pic_url])
|
||||||
}
|
}
|
||||||
|
|
||||||
editAlter(alter: AlterModel){
|
editAlter(alter: MemberModel){
|
||||||
this.db.run("UPDATE alters SET owner=?, prefix=?, name=?, profile_pic_url=?, color=? WHERE alters.id ='" + alter.id + "'",
|
this.db.run("UPDATE alters SET owner=?, prefix=?, name=?, profile_pic_url=?, color=? WHERE alters.id ='" + alter.id + "'",
|
||||||
[alter.owner, alter.prefix, alter.name, alter.profile_pic_url, alter.color])
|
[alter.owner, alter.prefix, alter.name, alter.profile_pic_url, alter.color])
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteAlter(alterId: number) {
|
delete(alterId: number) {
|
||||||
this.db.run("DELETE FROM alters WHERE alters.id='"+ alterId + "'")
|
this.db.run("DELETE FROM alters WHERE alters.id='"+ alterId + "'")
|
||||||
}
|
}
|
||||||
|
|
15
src/utils/checkAutoProxy.ts
Normal file
15
src/utils/checkAutoProxy.ts
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
import { MemberRepo } from "repositories/MemberRepo";
|
||||||
|
import { Database } from "sqlite3";
|
||||||
|
|
||||||
|
async function checkAutoProxy
|
||||||
|
(
|
||||||
|
userId: number,
|
||||||
|
database: Database
|
||||||
|
): Promise<Boolean>
|
||||||
|
{
|
||||||
|
const repo = new MemberRepo(database)
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
export default checkAutoProxy;
|
|
@ -1,15 +1,18 @@
|
||||||
import { Message } from "revolt.js"
|
import { Message } from "revolt.js"
|
||||||
import { returnHelpText } from "../commands/help"
|
import { Database } from "sqlite3"
|
||||||
import { listAlters } from "../commands/listAlters"
|
|
||||||
import { createAlter } from "../commands/createAlter"
|
|
||||||
import { deleteAlter } from "../commands/deleteAlter"
|
|
||||||
import { avatarAlterChange } from "../commands/avatarAlterChange"
|
|
||||||
import { colorAlterChange } from "../commands/colorAlterChange"
|
|
||||||
import migrationCommand from "../commands/migrateAlters"
|
|
||||||
|
|
||||||
import { split } from "shlex"
|
import { split } from "shlex"
|
||||||
|
|
||||||
export async function commandHandler(message : Message, _prefix : String) {
|
import { returnHelpText } from "../commands/help"
|
||||||
|
import listMember from "../commands/listMember"
|
||||||
|
import createMember from "../commands/createMember"
|
||||||
|
import { deleteMember } from "../commands/deleteMember"
|
||||||
|
import { avatarMemberChange } from "../commands/avatarMemberChange"
|
||||||
|
import colorMemberChange from "../commands/colorMemberChange"
|
||||||
|
import migrationCommand from "../commands/migrateMember"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export async function commandHandler(message : Message, db: Database, _prefix : String) {
|
||||||
let args : string[] = split(message.content);
|
let args : string[] = split(message.content);
|
||||||
args.shift()
|
args.shift()
|
||||||
const command = args[0]
|
const command = args[0]
|
||||||
|
@ -21,28 +24,28 @@ export async function commandHandler(message : Message, _prefix : String) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "list" : {
|
case "list" : {
|
||||||
await message.reply(await listAlters(message.author.id));
|
await message.reply(await listMember(message.author.id, db));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "create" : {
|
case "create" : {
|
||||||
const commandResponse = await createAlter(message.author.id, args);
|
const commandResponse = await createMember(message.author.id, args, db);
|
||||||
await message.reply (commandResponse.message)
|
await message.reply (commandResponse.message)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case "delete" : {
|
case "delete" : {
|
||||||
await message.reply(await deleteAlter(message.author.id, args))
|
await message.reply(await deleteMember(message.author.id, args, db))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case "avatar" : {
|
case "avatar" : {
|
||||||
await message.reply(await avatarAlterChange(message.author.id, args));
|
await message.reply(await avatarMemberChange(message.author.id, args, db));
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case "color" : {
|
case "color" : {
|
||||||
await message.reply(await colorAlterChange(message.author.id, args));
|
await message.reply(await colorMemberChange(message.author.id, args, db));
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
case "tupper" : {
|
case "tupper" : {
|
||||||
await message.reply(await migrationCommand(message.author.id, message.attachments, "placeholder"))
|
await message.reply(await migrationCommand(message.author.id, message.attachments, "placeholder", db))
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,46 +1,7 @@
|
||||||
import { Message } from "revolt.js"
|
import { Message } from "revolt.js"
|
||||||
import { AlterRepo } from "../repositories/AlterRepo"
|
import { Database } from "sqlite3";
|
||||||
import { AlterModel } from "../models/alterModel"
|
import sendAsMember from "./sendAsMemberHandler";
|
||||||
|
|
||||||
export async function nonCommandHandler(message : Message){
|
export async function nonCommandHandler(message : Message, database: Database){
|
||||||
const alterRepo: AlterRepo = new AlterRepo();
|
await sendAsMember(message, database);
|
||||||
let alters: AlterModel[];
|
|
||||||
await alterRepo.getAltersByUserId(message.author.id).then(result => alters = result);
|
|
||||||
|
|
||||||
alters.forEach( async alter => {
|
|
||||||
const pre_prefix = alter.prefix.split("text");
|
|
||||||
if (message.content.startsWith(pre_prefix[0]) && message.content.endsWith(pre_prefix[1])) {
|
|
||||||
let actualContent: string = message.content;
|
|
||||||
actualContent = actualContent.slice(pre_prefix[0].length, actualContent.length - pre_prefix[1].length)
|
|
||||||
|
|
||||||
const replyIds: string[] | undefined = message.replyIds;
|
|
||||||
let replies: any[] = [];
|
|
||||||
|
|
||||||
if (replyIds !== undefined) {
|
|
||||||
replyIds.forEach( replyId => {
|
|
||||||
replies.push({
|
|
||||||
id: replyId,
|
|
||||||
mention: false
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
try{
|
|
||||||
await message.channel.sendMessage({
|
|
||||||
content: actualContent,
|
|
||||||
masquerade: {
|
|
||||||
name: alter.name ,
|
|
||||||
avatar: alter.profile_pic_url,
|
|
||||||
color: alter.color
|
|
||||||
},
|
|
||||||
replies: replies
|
|
||||||
})
|
|
||||||
await message.delete();
|
|
||||||
}
|
|
||||||
catch(e){
|
|
||||||
console.log(e)
|
|
||||||
await message.channel.sendMessage("Error: PluralCake requires at least these permissions: \n- Masquerade permissions. \n- Message editing permissions.")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
47
src/utils/sendAsMemberHandler.ts
Normal file
47
src/utils/sendAsMemberHandler.ts
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
import { Message } from "revolt.js"
|
||||||
|
import { Database } from "sqlite3";
|
||||||
|
import { MemberRepo } from "../repositories/MemberRepo"
|
||||||
|
import MemberModel from "../models/MemberModel"
|
||||||
|
|
||||||
|
export default async function sendAsMember(message: Message, database: Database) {
|
||||||
|
const alterRepo: MemberRepo = new MemberRepo(database);
|
||||||
|
let alters: MemberModel[];
|
||||||
|
await alterRepo.getAltersByUserId(message.author.id).then(result => alters = result);
|
||||||
|
|
||||||
|
alters.forEach( async alter => {
|
||||||
|
const pre_prefix = alter.prefix.split("text");
|
||||||
|
if (message.content.startsWith(pre_prefix[0]) && message.content.endsWith(pre_prefix[1])) {
|
||||||
|
let actualContent: string = message.content;
|
||||||
|
actualContent = actualContent.slice(pre_prefix[0].length, actualContent.length - pre_prefix[1].length)
|
||||||
|
|
||||||
|
const replyIds: string[] | undefined = message.replyIds;
|
||||||
|
let replies: any[] = [];
|
||||||
|
|
||||||
|
if (replyIds !== undefined) {
|
||||||
|
replyIds.forEach( replyId => {
|
||||||
|
replies.push({
|
||||||
|
id: replyId,
|
||||||
|
mention: false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
try{
|
||||||
|
await message.channel.sendMessage({
|
||||||
|
content: actualContent,
|
||||||
|
masquerade: {
|
||||||
|
name: alter.name ,
|
||||||
|
avatar: alter.profile_pic_url,
|
||||||
|
color: alter.color
|
||||||
|
},
|
||||||
|
replies: replies
|
||||||
|
})
|
||||||
|
await message.delete();
|
||||||
|
}
|
||||||
|
catch(e){
|
||||||
|
console.log(e)
|
||||||
|
await message.channel.sendMessage("Error: PluralCake requires at least these permissions: \n- Masquerade permissions. \n- Message editing permissions.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
Loading…
Reference in a new issue