Updated and added stuff
This commit is contained in:
parent
d1c30ccc31
commit
05505b0468
7 changed files with 612 additions and 160 deletions
|
@ -1,11 +1,14 @@
|
||||||
{
|
{
|
||||||
"name": "EllieBot",
|
"name": "elliebot",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^13.5.0",
|
"discord.js": "^13.5.1",
|
||||||
"dotenv": "^10.0.0"
|
"dotenv": "^11.0.0",
|
||||||
|
"mysql2": "^2.3.3",
|
||||||
|
"reflect-metadata": "^0.1.13",
|
||||||
|
"typeorm": "^0.2.41"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^17.0.8",
|
"@types/node": "^17.0.8",
|
||||||
|
|
32
src/events/GuildCreateEvent.ts
Normal file
32
src/events/GuildCreateEvent.ts
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
// https://discord.js.org/#/docs/main/stable/class/Client?scrollTo=e-guildCreate
|
||||||
|
import { Guild } from 'discord.js';
|
||||||
|
import BaseEvent from '../utils/structures/BaseEvent';
|
||||||
|
import DiscordClient from '../client/client';
|
||||||
|
import { getRepository } from 'typeorm';
|
||||||
|
import { GuildConfiguration } from '../typeorm/entities/GuildConfiguration';
|
||||||
|
|
||||||
|
export default class GuildCreateEvent extends BaseEvent {
|
||||||
|
constructor(
|
||||||
|
private readonly guildConfigRepository = getRepository (GuildConfiguration)
|
||||||
|
) {
|
||||||
|
super('guildCreate');
|
||||||
|
}
|
||||||
|
|
||||||
|
async run(client: DiscordClient, guild: Guild) {
|
||||||
|
console.log('Hellp World!');
|
||||||
|
console.log(`Joined ${guild.name}`);
|
||||||
|
|
||||||
|
const config = await this.guildConfigRepository.findOne({
|
||||||
|
guildId: guild.id,
|
||||||
|
});
|
||||||
|
if (config) {
|
||||||
|
console.log('A configuration was found!');
|
||||||
|
} else {
|
||||||
|
console.log('A configuration was not found. Creating One.');
|
||||||
|
const newConfig = this.guildConfigRepository.create({
|
||||||
|
guildId: guild.id,
|
||||||
|
})
|
||||||
|
return this.guildConfigRepository.save(newConfig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ import DiscordClient from '../../client/client';
|
||||||
|
|
||||||
export default class MessageEvent extends BaseEvent {
|
export default class MessageEvent extends BaseEvent {
|
||||||
constructor() {
|
constructor() {
|
||||||
super('message');
|
super('messageCreate');
|
||||||
}
|
}
|
||||||
|
|
||||||
async run(client: DiscordClient, message: Message) {
|
async run(client: DiscordClient, message: Message) {
|
||||||
|
|
13
src/index.ts
13
src/index.ts
|
@ -1,11 +1,24 @@
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
|
import 'reflect-metadata';
|
||||||
import { registerCommands, registerEvents } from './utils/registry';
|
import { registerCommands, registerEvents } from './utils/registry';
|
||||||
import config from '../slappey.json';
|
import config from '../slappey.json';
|
||||||
import DiscordClient from './client/client';
|
import DiscordClient from './client/client';
|
||||||
import { Intents } from 'discord.js';
|
import { Intents } from 'discord.js';
|
||||||
|
import { createConnection } from 'typeorm';
|
||||||
|
import { GuildConfiguration } from './typeorm/entities/GuildConfiguration';
|
||||||
const client = new DiscordClient({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES ] });
|
const client = new DiscordClient({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES ] });
|
||||||
|
|
||||||
(async () => {
|
(async () => {
|
||||||
|
await createConnection({
|
||||||
|
type: 'mysql',
|
||||||
|
host: process.env.MYSQL_DB_HOST,
|
||||||
|
port: 3306,
|
||||||
|
username: process.env.MYSQL_DB_USERNAME,
|
||||||
|
password: process.env.MYSQL_DB_PASSWORD,
|
||||||
|
database: process.env.MYSQL_DB_DATABASE,
|
||||||
|
synchronize: true,
|
||||||
|
entities: [GuildConfiguration]
|
||||||
|
});
|
||||||
client.prefix = config.prefix || client.prefix;
|
client.prefix = config.prefix || client.prefix;
|
||||||
await registerCommands(client, '../commands');
|
await registerCommands(client, '../commands');
|
||||||
await registerEvents(client, '../events');
|
await registerEvents(client, '../events');
|
||||||
|
|
16
src/typeorm/entities/GuildConfiguration.ts
Normal file
16
src/typeorm/entities/GuildConfiguration.ts
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
||||||
|
|
||||||
|
@Entity({ name: 'guild_configurations' })
|
||||||
|
export class GuildConfiguration {
|
||||||
|
@PrimaryGeneratedColumn()
|
||||||
|
id: number;
|
||||||
|
|
||||||
|
@Column({ unique: true, name: 'guild_id' })
|
||||||
|
guildId: string;
|
||||||
|
|
||||||
|
@Column({ default: '?' })
|
||||||
|
prefix: string;
|
||||||
|
|
||||||
|
@Column({name: 'welcome_channel_id', nullable: true})
|
||||||
|
welcomeChannelId: string;
|
||||||
|
}
|
|
@ -14,8 +14,8 @@
|
||||||
"target": "es6", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
"target": "es6", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */
|
||||||
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
// "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
|
||||||
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
// "jsx": "preserve", /* Specify what JSX code is generated. */
|
||||||
// "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
|
"experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */
|
||||||
// "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
"emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
|
||||||
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
|
// "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */
|
||||||
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
// "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
|
||||||
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
|
// "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */
|
||||||
|
@ -79,7 +79,7 @@
|
||||||
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
|
// "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */
|
||||||
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
// "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
|
||||||
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
|
// "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */
|
||||||
// "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
|
"strictPropertyInitialization": false, /* Check for class properties that are declared but not set in the constructor. */
|
||||||
// "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
|
// "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */
|
||||||
// "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
|
// "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */
|
||||||
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
// "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
|
||||||
|
|
Reference in a new issue