Added the most recent release notes
Also upgraded the yarn version used to the latest
This commit is contained in:
parent
5e54f66a34
commit
dff954592d
10 changed files with 5804 additions and 3662 deletions
253
.astro/astro/content.d.ts
vendored
Normal file
253
.astro/astro/content.d.ts
vendored
Normal file
|
@ -0,0 +1,253 @@
|
|||
declare module 'astro:content' {
|
||||
interface RenderResult {
|
||||
Content: import('astro/runtime/server/index.js').AstroComponentFactory;
|
||||
headings: import('astro').MarkdownHeading[];
|
||||
remarkPluginFrontmatter: Record<string, any>;
|
||||
}
|
||||
interface Render {
|
||||
'.md': Promise<RenderResult>;
|
||||
}
|
||||
|
||||
export interface RenderedContent {
|
||||
html: string;
|
||||
metadata?: {
|
||||
imagePaths: Array<string>;
|
||||
[key: string]: unknown;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'astro:content' {
|
||||
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
||||
|
||||
export type CollectionKey = keyof AnyEntryMap;
|
||||
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
|
||||
|
||||
export type ContentCollectionKey = keyof ContentEntryMap;
|
||||
export type DataCollectionKey = keyof DataEntryMap;
|
||||
|
||||
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
||||
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
|
||||
ContentEntryMap[C]
|
||||
>['slug'];
|
||||
|
||||
/** @deprecated Use `getEntry` instead. */
|
||||
export function getEntryBySlug<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
// Note that this has to accept a regular string too, for SSR
|
||||
entrySlug: E,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
|
||||
/** @deprecated Use `getEntry` instead. */
|
||||
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
|
||||
collection: C,
|
||||
entryId: E,
|
||||
): Promise<CollectionEntry<C>>;
|
||||
|
||||
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
|
||||
collection: C,
|
||||
filter?: (entry: CollectionEntry<C>) => entry is E,
|
||||
): Promise<E[]>;
|
||||
export function getCollection<C extends keyof AnyEntryMap>(
|
||||
collection: C,
|
||||
filter?: (entry: CollectionEntry<C>) => unknown,
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(entry: {
|
||||
collection: C;
|
||||
slug: E;
|
||||
}): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
>(entry: {
|
||||
collection: C;
|
||||
id: E;
|
||||
}): E extends keyof DataEntryMap[C]
|
||||
? Promise<DataEntryMap[C][E]>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
slug: E,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
id: E,
|
||||
): E extends keyof DataEntryMap[C]
|
||||
? Promise<DataEntryMap[C][E]>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
|
||||
/** Resolve an array of entry references from the same collection */
|
||||
export function getEntries<C extends keyof ContentEntryMap>(
|
||||
entries: {
|
||||
collection: C;
|
||||
slug: ValidContentEntrySlug<C>;
|
||||
}[],
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
export function getEntries<C extends keyof DataEntryMap>(
|
||||
entries: {
|
||||
collection: C;
|
||||
id: keyof DataEntryMap[C];
|
||||
}[],
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
|
||||
export function render<C extends keyof AnyEntryMap>(
|
||||
entry: AnyEntryMap[C][string],
|
||||
): Promise<RenderResult>;
|
||||
|
||||
export function reference<C extends keyof AnyEntryMap>(
|
||||
collection: C,
|
||||
): import('astro/zod').ZodEffects<
|
||||
import('astro/zod').ZodString,
|
||||
C extends keyof ContentEntryMap
|
||||
? {
|
||||
collection: C;
|
||||
slug: ValidContentEntrySlug<C>;
|
||||
}
|
||||
: {
|
||||
collection: C;
|
||||
id: keyof DataEntryMap[C];
|
||||
}
|
||||
>;
|
||||
// Allow generic `string` to avoid excessive type errors in the config
|
||||
// if `dev` is not running to update as you edit.
|
||||
// Invalid collection names will be caught at build time.
|
||||
export function reference<C extends string>(
|
||||
collection: C,
|
||||
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
|
||||
|
||||
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
||||
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
|
||||
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
||||
>;
|
||||
|
||||
type ContentEntryMap = {
|
||||
"releases": {
|
||||
"4_3_17.md": {
|
||||
id: "4_3_17.md";
|
||||
slug: "4_3_17";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"4_3_18.md": {
|
||||
id: "4_3_18.md";
|
||||
slug: "4_3_18";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_0_8.md": {
|
||||
id: "5_0_8.md";
|
||||
slug: "5_0_8";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_0.md": {
|
||||
id: "5_1_0.md";
|
||||
slug: "5_1_0";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_1.md": {
|
||||
id: "5_1_1.md";
|
||||
slug: "5_1_1";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_10.md": {
|
||||
id: "5_1_10.md";
|
||||
slug: "5_1_10";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_2.md": {
|
||||
id: "5_1_2.md";
|
||||
slug: "5_1_2";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_3.md": {
|
||||
id: "5_1_3.md";
|
||||
slug: "5_1_3";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_4.md": {
|
||||
id: "5_1_4.md";
|
||||
slug: "5_1_4";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_5.md": {
|
||||
id: "5_1_5.md";
|
||||
slug: "5_1_5";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_6.md": {
|
||||
id: "5_1_6.md";
|
||||
slug: "5_1_6";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_7.md": {
|
||||
id: "5_1_7.md";
|
||||
slug: "5_1_7";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_8.md": {
|
||||
id: "5_1_8.md";
|
||||
slug: "5_1_8";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_9.md": {
|
||||
id: "5_1_9.md";
|
||||
slug: "5_1_9";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
type DataEntryMap = {
|
||||
|
||||
};
|
||||
|
||||
type AnyEntryMap = ContentEntryMap & DataEntryMap;
|
||||
|
||||
export type ContentConfig = typeof import("./../../src/content/config.js");
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"_variables": {
|
||||
"lastUpdateCheck": 1723377321662
|
||||
"lastUpdateCheck": 1727179497177
|
||||
}
|
||||
}
|
221
.astro/types.d.ts
vendored
221
.astro/types.d.ts
vendored
|
@ -1,219 +1,2 @@
|
|||
declare module 'astro:content' {
|
||||
interface Render {
|
||||
'.md': Promise<{
|
||||
Content: import('astro').MarkdownInstance<{}>['Content'];
|
||||
headings: import('astro').MarkdownHeading[];
|
||||
remarkPluginFrontmatter: Record<string, any>;
|
||||
}>;
|
||||
}
|
||||
}
|
||||
|
||||
declare module 'astro:content' {
|
||||
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
||||
|
||||
export type CollectionKey = keyof AnyEntryMap;
|
||||
export type CollectionEntry<C extends CollectionKey> = Flatten<AnyEntryMap[C]>;
|
||||
|
||||
export type ContentCollectionKey = keyof ContentEntryMap;
|
||||
export type DataCollectionKey = keyof DataEntryMap;
|
||||
|
||||
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
||||
type ValidContentEntrySlug<C extends keyof ContentEntryMap> = AllValuesOf<
|
||||
ContentEntryMap[C]
|
||||
>['slug'];
|
||||
|
||||
/** @deprecated Use `getEntry` instead. */
|
||||
export function getEntryBySlug<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
// Note that this has to accept a regular string too, for SSR
|
||||
entrySlug: E,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
|
||||
/** @deprecated Use `getEntry` instead. */
|
||||
export function getDataEntryById<C extends keyof DataEntryMap, E extends keyof DataEntryMap[C]>(
|
||||
collection: C,
|
||||
entryId: E,
|
||||
): Promise<CollectionEntry<C>>;
|
||||
|
||||
export function getCollection<C extends keyof AnyEntryMap, E extends CollectionEntry<C>>(
|
||||
collection: C,
|
||||
filter?: (entry: CollectionEntry<C>) => entry is E,
|
||||
): Promise<E[]>;
|
||||
export function getCollection<C extends keyof AnyEntryMap>(
|
||||
collection: C,
|
||||
filter?: (entry: CollectionEntry<C>) => unknown,
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(entry: {
|
||||
collection: C;
|
||||
slug: E;
|
||||
}): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
>(entry: {
|
||||
collection: C;
|
||||
id: E;
|
||||
}): E extends keyof DataEntryMap[C]
|
||||
? Promise<DataEntryMap[C][E]>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof ContentEntryMap,
|
||||
E extends ValidContentEntrySlug<C> | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
slug: E,
|
||||
): E extends ValidContentEntrySlug<C>
|
||||
? Promise<CollectionEntry<C>>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
export function getEntry<
|
||||
C extends keyof DataEntryMap,
|
||||
E extends keyof DataEntryMap[C] | (string & {}),
|
||||
>(
|
||||
collection: C,
|
||||
id: E,
|
||||
): E extends keyof DataEntryMap[C]
|
||||
? Promise<DataEntryMap[C][E]>
|
||||
: Promise<CollectionEntry<C> | undefined>;
|
||||
|
||||
/** Resolve an array of entry references from the same collection */
|
||||
export function getEntries<C extends keyof ContentEntryMap>(
|
||||
entries: {
|
||||
collection: C;
|
||||
slug: ValidContentEntrySlug<C>;
|
||||
}[],
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
export function getEntries<C extends keyof DataEntryMap>(
|
||||
entries: {
|
||||
collection: C;
|
||||
id: keyof DataEntryMap[C];
|
||||
}[],
|
||||
): Promise<CollectionEntry<C>[]>;
|
||||
|
||||
export function reference<C extends keyof AnyEntryMap>(
|
||||
collection: C,
|
||||
): import('astro/zod').ZodEffects<
|
||||
import('astro/zod').ZodString,
|
||||
C extends keyof ContentEntryMap
|
||||
? {
|
||||
collection: C;
|
||||
slug: ValidContentEntrySlug<C>;
|
||||
}
|
||||
: {
|
||||
collection: C;
|
||||
id: keyof DataEntryMap[C];
|
||||
}
|
||||
>;
|
||||
// Allow generic `string` to avoid excessive type errors in the config
|
||||
// if `dev` is not running to update as you edit.
|
||||
// Invalid collection names will be caught at build time.
|
||||
export function reference<C extends string>(
|
||||
collection: C,
|
||||
): import('astro/zod').ZodEffects<import('astro/zod').ZodString, never>;
|
||||
|
||||
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
||||
type InferEntrySchema<C extends keyof AnyEntryMap> = import('astro/zod').infer<
|
||||
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
||||
>;
|
||||
|
||||
type ContentEntryMap = {
|
||||
"releases": {
|
||||
"4_3_17.md": {
|
||||
id: "4_3_17.md";
|
||||
slug: "4_3_17";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"4_3_18.md": {
|
||||
id: "4_3_18.md";
|
||||
slug: "4_3_18";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_0_8.md": {
|
||||
id: "5_0_8.md";
|
||||
slug: "5_0_8";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_0.md": {
|
||||
id: "5_1_0.md";
|
||||
slug: "5_1_0";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_1.md": {
|
||||
id: "5_1_1.md";
|
||||
slug: "5_1_1";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_2.md": {
|
||||
id: "5_1_2.md";
|
||||
slug: "5_1_2";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_3.md": {
|
||||
id: "5_1_3.md";
|
||||
slug: "5_1_3";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_4.md": {
|
||||
id: "5_1_4.md";
|
||||
slug: "5_1_4";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_5.md": {
|
||||
id: "5_1_5.md";
|
||||
slug: "5_1_5";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_6.md": {
|
||||
id: "5_1_6.md";
|
||||
slug: "5_1_6";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
"5_1_7.md": {
|
||||
id: "5_1_7.md";
|
||||
slug: "5_1_7";
|
||||
body: string;
|
||||
collection: "releases";
|
||||
data: InferEntrySchema<"releases">
|
||||
} & { render(): Render[".md"] };
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
type DataEntryMap = {
|
||||
|
||||
};
|
||||
|
||||
type AnyEntryMap = ContentEntryMap & DataEntryMap;
|
||||
|
||||
export type ContentConfig = typeof import("./../src/content/config.js");
|
||||
}
|
||||
/// <reference types="astro/client" />
|
||||
/// <reference path="astro/content.d.ts" />
|
BIN
.yarn/install-state.gz
Normal file
BIN
.yarn/install-state.gz
Normal file
Binary file not shown.
1
.yarnrc.yml
Normal file
1
.yarnrc.yml
Normal file
|
@ -0,0 +1 @@
|
|||
nodeLinker: node-modules
|
|
@ -11,10 +11,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "0.9.2",
|
||||
"astro": "^4.13.3",
|
||||
"astro": "^4.15.9",
|
||||
"sass": "^1.77.8",
|
||||
"sharp": "^0.33.3",
|
||||
"typescript": "^5.3.3"
|
||||
},
|
||||
"packageManager": "yarn@1.22.21+sha1.1959a18351b811cdeedbd484a8f86c3cc3bbaf72"
|
||||
"packageManager": "yarn@4.5.0"
|
||||
}
|
14
src/content/releases/5_1_10.md
Normal file
14
src/content/releases/5_1_10.md
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
title: 'Ellie Bot 5.1.10.'
|
||||
date: '2024-09-24'
|
||||
versionNumber: '5.1.10'
|
||||
description: 'Ellie Bot version 5.1.10 release notes.'
|
||||
---
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed claimed waifu decay in `games.yml`
|
||||
|
||||
### Changed
|
||||
|
||||
- Added some logs for greet service in case there are unforeseen issues, for easier debugging
|
39
src/content/releases/5_1_8.md
Normal file
39
src/content/releases/5_1_8.md
Normal file
|
@ -0,0 +1,39 @@
|
|||
---
|
||||
title: 'Ellie Bot 5.1.8.'
|
||||
date: '2024-09-20'
|
||||
versionNumber: '5.1.8'
|
||||
description: 'Ellie Bot version 5.1.8 release notes.'
|
||||
---
|
||||
|
||||
### Added
|
||||
|
||||
- Added `.leaveunkeptservers` which will make the bot leave all servers on all shards whose owners didn't run `.keep` command.
|
||||
- This is a dangerous and irreversible command, don't use it. Meant for use on the public bot.
|
||||
- `.adpl` now supports custom statuses (you no longer need to specify Playing, Watching, etc...)
|
||||
|
||||
### Changed
|
||||
|
||||
- `.quote` commands cleaned up and improved
|
||||
- All quote commands now start with `.q<whatever>` and follow the same naming pattern as Expression commands
|
||||
- `.liqu` renamed to `.qli`
|
||||
- `.quotesearch` / `.qse` is now paginated for easier searching
|
||||
- `.whosplaying` is now paginated
|
||||
- `.img` is now paginated
|
||||
- `.setgame` renamed to `.setactivity` and now supports custom text activity. You don't have to specify playing, listening etc before the activity
|
||||
- Clarified and added some embed / placeholder links to command help where needed
|
||||
- A lot of code cleanup and internal improvements
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `.xpcurrew` breaking xp gain if user gains 0 xp from being in a voice channel
|
||||
- Fixed a bug in `.gatari` command
|
||||
- Fixed some waifu related strings
|
||||
- Fixed `.quoteshow` and `.quoteid` commands
|
||||
- Fixed some placeholders not working in `.greetdm`
|
||||
- Fixed postgres support
|
||||
- Fixed and clarified some command strings/parameter descriptions
|
||||
|
||||
### Removed
|
||||
|
||||
- Removed mysql support as it didn't work for a while, and requires some special handling/maintenance
|
||||
- Sqlite and Postgres support stays
|
17
src/content/releases/5_1_9.md
Normal file
17
src/content/releases/5_1_9.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
title: 'Ellie Bot 5.1.9.'
|
||||
date: '2024-09-21'
|
||||
versionNumber: '5.1.9'
|
||||
description: 'Ellie Bot version 5.1.9 release notes.'
|
||||
---
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fixed `.greettest`, and other `.*test` commands if you didn't have them enabled.
|
||||
- Fixed `.greetdmtest` sending messages twice.
|
||||
- Fixed a serious bug which caused greet messages to be jumbled up, and wrong ones to be sent for the wrong events.
|
||||
- There is no database issue, all greet messages are safe, the cache was caching any setting every 3 seconds with no regard for the type of the event
|
||||
- This also caused `.greetdm` messages to not be sent if `.greet` is enabled
|
||||
- This bug was introduced in 5.1.8. PLEASE UPDATE if you are on 5.1.8
|
||||
- Selfhosters only: Fixed marmalade dependency loading
|
||||
- Note: Make sure to not publish any other DLLs besides the ones you are sure you will need, as there can be version conflicts which didn't happen before.
|
Loading…
Reference in a new issue