Compare commits

..

No commits in common. "master" and "V1.1.0" have entirely different histories.

9 changed files with 14 additions and 115 deletions

5
.github/CODEOWNERS vendored
View File

@ -1,5 +0,0 @@
* @burn-e99
config.example.ts @davidopluslau
README.md @davidopluslau
src/buttons/event-creation/activities.ts @davidopluslau

View File

@ -1,42 +0,0 @@
# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.
# This workflow will install Deno then run `deno lint` and `deno test`.
# For more information see: https://github.com/denoland/setup-deno
name: Deno
on:
push:
branches: ["master"]
pull_request:
branches: ["master"]
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Setup repo
uses: actions/checkout@v4
- name: Setup Deno
# uses: denoland/setup-deno@v1
uses: denoland/setup-deno@61fe2df320078202e33d7d5ad347e7dcfa0e8f31 # v1.1.2
with:
deno-version: v1.x
- name: Verify formatting
run: deno fmt --check
- name: Run linter
run: deno lint
# Add this back in when tests are added
# - name: Run tests
# run: deno test -A

View File

@ -1,10 +0,0 @@
# CONTRIBUTING TO GROUP UP
## Things to check before committing a change
- Formatting and linting
- Run `deno fmt` to set all formatting correct
- Run `deno lint` to check for any issues that need fixed
- Are you making a change that will be updating the version number?
- Update the version number in `README.md` and `config.example.ts`, and update the date in `README.md`
- Create a tag on your commit marking this version (name it Vx.x.x)
## Things to check after committing a change
- Check in on Sonar to see if your commit caused new issues to appear. If it did, please fix them

View File

@ -1,4 +1,4 @@
# Group Up - An Event Scheduling Discord Bot | V2.0.0 - 2024/12/24
# Group Up - An Event Scheduling Discord Bot | V1.1.0 - 2024/05/21
[![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-orange.svg)](https://sonarcloud.io/summary/new_code?id=GroupUp)
[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=GroupUp&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=GroupUp) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=GroupUp&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=GroupUp) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=GroupUp&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=GroupUp) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=GroupUp&metric=bugs)](https://sonarcloud.io/summary/new_code?id=GroupUp) [![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=GroupUp&metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=GroupUp) [![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=GroupUp&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=GroupUp)
@ -43,12 +43,7 @@ If you run into any errors or problems with the bot, or think you have a good id
---
## Self Hosting Group Up
Group Up is built on [Deno](https://deno.land/) using [Discordeno](https://discordeno.mod.land/) `v17.0.1`.
Group Up `V1.1.6` and lower requires Deno `V.33.1`.
Group Up `V2.0.0` and up requires Deno `V2.0.0`.
If you choose to run this yourself, you will need to rename `config.example.ts` to `config.ts` and edit some values. You will need to create a new [Discord Application](https://discord.com/developers/applications) and copy the newly generated token into the `"token"` field. If you want to utilize some of the bots dev features, you will need to fill in the keys `"logChannel"` and `"reportChannel"` with text channel IDs and `"devServer"` with a guild ID.
Group Up is built on [Deno](https://deno.land/) `v1.33.1` using [Discordeno](https://discordeno.mod.land/) `v17.0.1`. If you choose to run this yourself, you will need to rename `config.example.ts` to `config.ts` and edit some values. You will need to create a new [Discord Application](https://discord.com/developers/applications) and copy the newly generated token into the `"token"` field. If you want to utilize some of the bots dev features, you will need to fill in the keys `"logChannel"` and `"reportChannel"` with text channel IDs and `"devServer"` with a guild ID.
You will also need to install and setup a MySQL database with a user for the bot to use to add/modify the database. This user must have the `"DB Manager"` admin rights and `"REFERENCES"` Global Privileges. Once the DB is installed and a user is setup, run the provided `db\initialize.ts` to create the schema and tables. After this, run `db\populateDefaults.ts` to insert some needed values into the tables.

View File

@ -1,6 +1,6 @@
export const config = { // !! NOTICE !! All fields below are required unless they are explicitly noted as OPTIONAL. If a field is OPTIONAL, do not remove it from this file, just leave it at the default value
'name': 'Group Up', // Name of the bot
'version': '2.0.0', // Version of the bot
'version': '1.1.0', // Version of the bot
'token': 'the_bot_token', // Discord API Token for this bot
'localToken': 'local_testing_token', // Discord API Token for a secondary OPTIONAL testing bot, THIS SHOULD BE DIFFERENT FROM "token"
'prefix': '/', // Prefix for all commands, as this bot uses slash commands, this needs to be '/'
@ -19,10 +19,10 @@ export const config = { // !! NOTICE !! All fields below are required unless the
'creatorIcon': '', // Link to where the GroupUpSinglePerson.png (or similar image) is hosted
},
'defaultDateFormat': 'MONTH/DAY/YEAR', // Default format that Group Up will suggest to the user. Must match one of the options in the 'DateTimeFormats' enum inside 'src/buttons/event-creation/dateTimeUtils.ts'
'logChannel': 0n, // Discord channel ID where the bot should put startup messages and other error messages needed. This value is a bigint, so please ensure you have a `n` after the ID you get from Discord. OPTIONAL
'reportChannel': 0n, // Discord channel ID where reports will be sent when using the built-in report command. This value is a bigint, so please ensure you have a `n` after the ID you get from Discord. OPTIONAL
'devServer': 0n, // Discord guild ID where testing of indev features/commands will be handled, used in conjunction with the DEVMODE bool in mod.ts. This value is a bigint, so please ensure you have a `n` after the ID you get from Discord. OPTIONAL
'owner': 0n, // Discord user ID of the bot admin. This value is a bigint, so please ensure you have a `n` after the ID you get from Discord.
'logChannel': 0n, // Discord channel ID where the bot should put startup messages and other error messages needed, OPTIONAL
'reportChannel': 0n, // Discord channel ID where reports will be sent when using the built-in report command, OPTIONAL
'devServer': 0n, // Discord guild ID where testing of indev features/commands will be handled, used in conjunction with the DEVMODE bool in mod.ts, OPTIONAL
'owner': 0n, // Discord user ID of the bot admin
'botLists': [ // Array of objects containing all bot lists that stats should be posted to, OPTIONAL
{ // Bot List object, duplicate for each bot list
'name': 'Bot List Name', // Name of bot list, not used

View File

@ -47,4 +47,4 @@ export type {
export { Client } from 'https://deno.land/x/mysql@v2.11.0/mod.ts';
export { initLog, log, LogTypes as LT } from 'https://raw.githubusercontent.com/Burn-E99/Log4Deno/V2.0.0/mod.ts';
export { initLog, log, LogTypes as LT } from 'https://raw.githubusercontent.com/Burn-E99/Log4Deno/V1.1.0/mod.ts';

View File

@ -15,10 +15,6 @@ export const Activities: Array<Activity> = [
{
name: 'Raids',
options: [
{
name: "Salvation's Edge",
maxMembers: 6,
},
{
name: "Crota's End",
maxMembers: 6,
@ -165,11 +161,7 @@ export const Activities: Array<Activity> = [
maxMembers: 3,
},
{
name: 'The Whisper',
maxMembers: 3,
},
{
name: 'Presage',
name: 'Whisper',
maxMembers: 3,
},
],
@ -177,35 +169,6 @@ export const Activities: Array<Activity> = [
{
name: 'Miscellaneous/Seasonal',
options: [
{
name: 'Excision',
maxMembers: 12,
},
{
name: 'Pantheon',
options: [
{
name: 'Atraks Sovereign (Week 1)',
maxMembers: 6,
},
{
name: 'Oryx Exalted (Week 2)',
maxMembers: 6,
},
{
name: 'Rhulk Indomitable (Week 3)',
maxMembers: 6,
},
{
name: 'Nezarec Sublime (Week 4)',
maxMembers: 6,
},
],
},
{
name: 'Onslaught',
maxMembers: 3,
},
{
name: 'Fishing',
maxMembers: 3,

View File

@ -27,12 +27,10 @@ export const alternateEventBtnStr = 'Join as Alternate';
export const noDescProvided = 'No description provided.';
// Member List generators
const escapeMemberNameForDisplay = (memberName: string): string => memberName.replaceAll('\\', '').replaceAll('_', '\\_');
export const generateMemberTitle = (memberList: Array<LFGMember>, maxMembers: number): string => `Members Joined: ${memberList.length}/${maxMembers}`;
export const generateMemberList = (memberList: Array<LFGMember>): string =>
memberList.length ? memberList.map((member) => `${escapeMemberNameForDisplay(member.name)} - <@${member.id}>`).join('\n') : noMembersStr;
export const generateMemberList = (memberList: Array<LFGMember>): string => memberList.length ? memberList.map((member) => `${member.name} - <@${member.id}>`).join('\n') : noMembersStr;
export const generateAlternateList = (alternateList: Array<LFGMember>): string =>
alternateList.length ? alternateList.map((member) => `${escapeMemberNameForDisplay(member.name)} - <@${member.id}>${member.joined ? ' *' : ''}`).join('\n') : noMembersStr;
alternateList.length ? alternateList.map((member) => `${member.name} - <@${member.id}>${member.joined ? ' *' : ''}`).join('\n') : noMembersStr;
// Fields for event creation and editing modals
export const eventTimeId = 'eventTime';

View File

@ -1,4 +1,4 @@
import { ApplicationCommandOption, ApplicationCommandTypes, Bot, BotWithCache, Interaction, PermissionStrings } from '../../deps.ts';
import { ApplicationCommandOption, ApplicationCommandTypes, PermissionStrings } from '../../deps.ts';
export type CommandDetails = {
name: string;
@ -11,12 +11,12 @@ export type CommandDetails = {
export type Command = {
details: CommandDetails;
execute: ((bot: Bot, interaction: Interaction) => void) | ((bot: BotWithCache, interaction: Interaction) => void);
execute: Function;
};
export type Button = {
customId: string;
execute: ((bot: Bot, interaction: Interaction) => void) | ((bot: BotWithCache, interaction: Interaction) => void);
execute: Function;
};
export type LfgChannelSetting = {