diff --git a/.astro/types.d.ts b/.astro/types.d.ts new file mode 100644 index 0000000..8393c9e --- /dev/null +++ b/.astro/types.d.ts @@ -0,0 +1,203 @@ +declare module 'astro:content' { + interface Render { + '.md': Promise<{ + Content: import('astro').MarkdownInstance<{}>['Content']; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + }>; + } +} + +declare module 'astro:content' { + export { z } from 'astro/zod'; + + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + // This needs to be in sync with ImageMetadata + export type ImageFunction = () => import('astro/zod').ZodObject<{ + src: import('astro/zod').ZodString; + width: import('astro/zod').ZodNumber; + height: import('astro/zod').ZodNumber; + format: import('astro/zod').ZodUnion< + [ + import('astro/zod').ZodLiteral<'png'>, + import('astro/zod').ZodLiteral<'jpg'>, + import('astro/zod').ZodLiteral<'jpeg'>, + import('astro/zod').ZodLiteral<'tiff'>, + import('astro/zod').ZodLiteral<'webp'>, + import('astro/zod').ZodLiteral<'gif'>, + import('astro/zod').ZodLiteral<'svg'>, + import('astro/zod').ZodLiteral<'avif'>, + ] + >; + }>; + + type BaseSchemaWithoutEffects = + | import('astro/zod').AnyZodObject + | import('astro/zod').ZodUnion<[BaseSchemaWithoutEffects, ...BaseSchemaWithoutEffects[]]> + | import('astro/zod').ZodDiscriminatedUnion + | import('astro/zod').ZodIntersection; + + type BaseSchema = + | BaseSchemaWithoutEffects + | import('astro/zod').ZodEffects; + + export type SchemaContext = { image: ImageFunction }; + + type DataCollectionConfig = { + type: 'data'; + schema?: S | ((context: SchemaContext) => S); + }; + + type ContentCollectionConfig = { + type?: 'content'; + schema?: S | ((context: SchemaContext) => S); + }; + + type CollectionConfig = ContentCollectionConfig | DataCollectionConfig; + + export function defineCollection( + input: CollectionConfig + ): CollectionConfig; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + export function getDataEntryById( + collection: C, + entryId: E + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown + ): Promise[]>; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >(entry: { + collection: C; + slug: E; + }): E extends ValidContentEntrySlug + ? Promise> + : Promise | 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 + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E + ): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: { + collection: C; + slug: ValidContentEntrySlug; + }[] + ): Promise[]>; + export function getEntries( + entries: { + collection: C; + id: keyof DataEntryMap[C]; + }[] + ): Promise[]>; + + export function reference( + collection: C + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? { + collection: C; + slug: ValidContentEntrySlug; + } + : { + 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( + collection: C + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['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"] }; +}; + + }; + + type DataEntryMap = { + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + type ContentConfig = typeof import("../src/content/config"); +} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml deleted file mode 100644 index f690630..0000000 --- a/.github/workflows/deploy.yml +++ /dev/null @@ -1,37 +0,0 @@ -name: Deploy to GitHub Pages - -on: - push: - branches: [main] - paths: [website/**] - -jobs: - deploy: - name: Deploy to GitHub Pages - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: 14.x - cache: yarn - - name: Build website - working-directory: website - run: | - yarn install --frozen-lockfile - yarn build - - # Popular action to deploy to GitHub Pages: - # Docs: https://github.com/peaceiris/actions-gh-pages#%EF%B8%8F-docusaurus - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v3 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - # Build output to publish to the `gh-pages` branch: - publish_dir: ./website/build - # Assign commit authorship to the official GH-Actions bot for deploys to `gh-pages` branch: - # https://github.com/actions/checkout/issues/13#issuecomment-724415212 - # The GH actions bot is used by default if you didn't specify the two fields. - # You can swap them out with your own user credentials. - user_name: github-actions[bot] - user_email: 41898282+github-actions[bot]@users.noreply.github.com \ No newline at end of file diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml deleted file mode 100644 index cdab495..0000000 --- a/.github/workflows/test-deploy.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Test deployment - -on: - pull_request: - branches: [main] - paths: [website/**] - -jobs: - test-deploy: - name: Test deployment - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v2 - with: - node-version: 14.x - cache: yarn - - name: Test build - working-directory: website - run: | - yarn install --frozen-lockfile - yarn build \ No newline at end of file diff --git a/.gitignore b/.gitignore index b2d6de3..b512c09 100644 --- a/.gitignore +++ b/.gitignore @@ -1,20 +1 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* +node_modules \ No newline at end of file diff --git a/README.md b/README.md index 60f56bb..0f92d37 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# ellie-patchnotes +# Ellie Patchnotes -[![Netlify Status](https://api.netlify.com/api/v1/badges/6819b1e5-ef88-4867-86fd-862281cda04d/deploy-status)](https://app.netlify.com/sites/ellie-patchnotes/deploys) +## Release notes site built with Astro diff --git a/astro.config.mjs b/astro.config.mjs new file mode 100644 index 0000000..fca3337 --- /dev/null +++ b/astro.config.mjs @@ -0,0 +1,6 @@ +import { defineConfig } from 'astro/config'; + +// https://astro.build/config +export default defineConfig({ + site: 'https://notes.elliebot.net', +}); diff --git a/babel.config.js b/babel.config.js deleted file mode 100644 index e00595d..0000000 --- a/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], -}; diff --git a/blog/2022-05-07-4.1.3-patch-notes.md b/blog/2022-05-07-4.1.3-patch-notes.md deleted file mode 100644 index 933d625..0000000 --- a/blog/2022-05-07-4.1.3-patch-notes.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -slug: 4.1.3-patch-notes -title: 4.1.3 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Added - -- Added support for embed arrays in commands such as 'say, 'greet, 'bye, etc... - - Website to create them is live at https://eb.elliebot.net (old one is moved to https://oldeb.elliebot.net) - - Embed arrays don't have a plainText property (it's renamed to 'content') - - Embed arrays use color hex values instead of an integer - - Old embed format will still work - - There shouldn't be any breaking changes -- Added `'stondel` command which, when toggled, will make the bot delete online stream messages on the server when the stream goes offline -- Added a simple bank system. - - Users can deposit, withdraw and check the balance of their currency in the bank. - - Users can't check other user's bank balances. -- Added a button on a '$ command which, when clicked, sends you a message with your bank balance that only you can see. -- Added `'h ` - - Using this command will list all commands in the specified group - - Atm only 'bank is a proper group (`'h bank`) -- Added "Bank Accounts" entry to `'economy` - - - -### Changed - -- Reaction roles rewritten completely - - Supports multiple exclusivity groups per message - - Supports level requirements - - However they can only be added one by one - - Use the following commands for more information - - `'h 'reroa` - - `'h 'reroli` - - `'h 'rerot` - - `'h 'rerorm` - - `'h 'rerodela` -- Pagination is now using buttons instead of reactions -- Bot will now support much higher XP values for global and server levels - - -### Fixed - -- Fixed `'deletexp` command -- `'give` command should send DMs again -- `'modules` command now has a medusa module description \ No newline at end of file diff --git a/blog/2022-05-08-4.1.4-patch-notes.md b/blog/2022-05-08-4.1.4-patch-notes.md deleted file mode 100644 index 44f3fd8..0000000 --- a/blog/2022-05-08-4.1.4-patch-notes.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -slug: 4.1.4-patch-notes -title: 4.1.4 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Fixed - -- Fixed `'yun` \ No newline at end of file diff --git a/blog/2022-05-11-4.1.5-patch-notes.md b/blog/2022-05-11-4.1.5-patch-notes.md deleted file mode 100644 index e0de344..0000000 --- a/blog/2022-05-11-4.1.5-patch-notes.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -slug: 4.1.5-patch-notes -title: 4.1.5 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Changed - -- `'clubdesc ` will now have a nicer response - - -### Fixed - -- `'give` DM will once again show an amount -- Fixed an issue with filters not working and with custom reactions no longer being able to override commands. -- Fixed `'stock` command \ No newline at end of file diff --git a/blog/2022-05-14-4.1.6-patch-notes.md b/blog/2022-05-14-4.1.6-patch-notes.md deleted file mode 100644 index 8d75926..0000000 --- a/blog/2022-05-14-4.1.6-patch-notes.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -slug: 4.1.6-patch-notes -title: 4.1.6 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -Not anything to mention in this update to list as a patch note diff --git a/blog/2022-11-10-4.3.10-patch-notes.md b/blog/2022-11-10-4.3.10-patch-notes.md deleted file mode 100644 index bb7d33a..0000000 --- a/blog/2022-11-10-4.3.10-patch-notes.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -slug: 4.3.10-patch-notes -title: 4.3.10 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -Here are the current patch notes for Ellie - -## Added - - - 'filterlist / 'fl command which lists link and invite filtering channels and status - - Added support for %target% placeholder in 'alias command - - Added 'forwardtochannel which will forward messages to the current channel. It has lower priority than fwtoall - - Added 'exprtoggleglobal / 'extg which can be used to toggle usage of global expressions on the server - - -## Changed - - - Several club related command have their error messages improved - - Updated help text for 'antispam and 'antiraid - - You can now specify time and date (time is optional) in .remind command instead of relative time, in the format HH:mm dd.MM.YYYY - - -## Fixed - - - Fixed 'cmdcd console error - - Fixed an error when currency is add per xp - - Fixed 'feedadd - - - Fixed 'prune @target not working - - Fixed command cooldown calculation \ No newline at end of file diff --git a/blog/2022-12-03-small-update.md b/blog/2022-12-03-small-update.md deleted file mode 100644 index 4d77488..0000000 --- a/blog/2022-12-03-small-update.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: small-update -title: Small update on things -authors: [EmotionChild] -tags: [Update] ---- - -Hey guys sorry for the lack of patch notes I have been really busy with IRL stuff hopefully I can get back into writing the patch notes and publishing them again I am sorry for the lack of posts here and I plan on changing that - -Thanks for reading, - -EmotionChild \ No newline at end of file diff --git a/blog/2023-01-23-4.3.11-patch-notes.md b/blog/2023-01-23-4.3.11-patch-notes.md deleted file mode 100644 index b233679..0000000 --- a/blog/2023-01-23-4.3.11-patch-notes.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -slug: 4.3.11-patch-notes -title: 4.3.11 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Added - - - Added `'stickeradd` command - - -### Changed - - - - `'waifuinfo` optimized - - You can now specify an optional custom message in `'feed` and `'yun` which will be posted along with an update - - Greet/bye messages will now get disabled if they're set to a deleted/unknown channel - - Updated response strings - - `'translate` now supports many more languages - - `'translangs` prettier output - - -### Fixed - - - Added logging for thread events - - Fixed a bug for `'quotedeleteauthor` causing the executing user to delete own messages - - Fixed TimeOut punishment not alklowing duration - - Fixed a nullref in streamrole service - - Fixed some potential causes for ratelimit due to default message retry settings - - Fixed a patron rewards bug caused by monthly donation checking not accounting for year increase - - Fixed a patron rewards bug for users who connected the same discord account with multiple patreon accounts - - `'deletecurrency` will now also reset banked currency - - Fixed DMHelpText reply - - `'h` command show now properly show both channel and server user permission requirements - - Many fixes and improvements to medusa system - - Fixed trivia --nohint - - `'joinrace` will no longer fail if the user isn't in the database yet \ No newline at end of file diff --git a/blog/2023-02-12-4.3.12-patch-notes.md b/blog/2023-02-12-4.3.12-patch-notes.md deleted file mode 100644 index b888cea..0000000 --- a/blog/2023-02-12-4.3.12-patch-notes.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: 4.3.12-patch-notes -title: 4.3.12 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Fixed - - - Fixed `'betstats` not working on european locales - - Timed `'ban` will work on users who are not in the server - - Fixed some general bugs \ No newline at end of file diff --git a/blog/2023-02-20-4.3.13-patch-notes.md b/blog/2023-02-20-4.3.13-patch-notes.md deleted file mode 100644 index f10e565..0000000 --- a/blog/2023-02-20-4.3.13-patch-notes.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -slug: 4.3.13-patch-notes -title: 4.3.13 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Fixed - - - Fixed `'log` userpresence - - `'q` will now use yt-dlp if anything other than ytProvider: Ytdl is set in data/searches.yml - - Fixed Title links on some embeds \ No newline at end of file diff --git a/blog/2023-04-02-4.3.14-patch-notes.md b/blog/2023-04-02-4.3.14-patch-notes.md deleted file mode 100644 index 48ce46c..0000000 --- a/blog/2023-04-02-4.3.14-patch-notes.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -slug: 4.3.14-patch-notes -title: 4.3.14 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Fixed - - - `'banktake` had ok/error responses flipped. No functional change - - PermRole should deny messages in threads todo - - Fixed chucknorris jokes - - `'logserver` will now work as intended \ No newline at end of file diff --git a/blog/2023-05-21-4.3.15-patch-notes.md b/blog/2023-05-21-4.3.15-patch-notes.md deleted file mode 100644 index 2c177d8..0000000 --- a/blog/2023-05-21-4.3.15-patch-notes.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -slug: 4.3.15-patch-notes -title: 4.3.15 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Fixed - - - Fixed -w 0 in trivia - - Fixed `'rps` amount field in the response - - Fixed `'showembed` output - - Fixed bank award's incorrect output message \ No newline at end of file diff --git a/blog/2023-05-24-4.3.16-patch-notes.md b/blog/2023-05-24-4.3.16-patch-notes.md deleted file mode 100644 index a1fbe24..0000000 --- a/blog/2023-05-24-4.3.16-patch-notes.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -slug: 4.3.16-patch-notes -title: 4.3.16 patch notes -authors: [EmotionChild] -tags: [Patchnote] ---- - -### Fixed - - - Fixed missing events from `'logevents` - - Fixed `'log` thread deleted and thread created events not working properly \ No newline at end of file diff --git a/blog/authors.yml b/blog/authors.yml deleted file mode 100644 index 882db97..0000000 --- a/blog/authors.yml +++ /dev/null @@ -1,11 +0,0 @@ -EmotionChild: - name: EmotionChild - title: Lead Developer and Project Lead - url: https://www.emotionchild.com - image_url: https://github.com/EmotionChild.png - -Ellie Devs: - name: Ellie Devs - title: Dev / management team - url: https://github.com/EllieBotDevs - image_url: https://github.com/EllieBotDevs.png \ No newline at end of file diff --git a/dist/_astro/hoisted.-OpaiJNX.js b/dist/_astro/hoisted.-OpaiJNX.js new file mode 100644 index 0000000..69e1297 --- /dev/null +++ b/dist/_astro/hoisted.-OpaiJNX.js @@ -0,0 +1 @@ +const Q="astro:before-preparation",Z="astro:after-preparation",ee="astro:before-swap",te="astro:after-swap",ne=e=>document.dispatchEvent(new Event(e));class q extends Event{from;to;direction;navigationType;sourceElement;info;newDocument;constructor(t,n,o,r,a,u,f,i,m){super(t,n),this.from=o,this.to=r,this.direction=a,this.navigationType=u,this.sourceElement=f,this.info=i,this.newDocument=m,Object.defineProperties(this,{from:{enumerable:!0},to:{enumerable:!0,writable:!0},direction:{enumerable:!0,writable:!0},navigationType:{enumerable:!0},sourceElement:{enumerable:!0},info:{enumerable:!0},newDocument:{enumerable:!0,writable:!0}})}}class oe extends q{formData;loader;constructor(t,n,o,r,a,u,f,i,m){super(Q,{cancelable:!0},t,n,o,r,a,u,f),this.formData=i,this.loader=m.bind(this,this),Object.defineProperties(this,{formData:{enumerable:!0},loader:{enumerable:!0,writable:!0}})}}class re extends q{direction;viewTransition;swap;constructor(t,n,o){super(ee,void 0,t.from,t.to,t.direction,t.navigationType,t.sourceElement,t.info,t.newDocument),this.direction=t.direction,this.viewTransition=n,this.swap=o.bind(this,this),Object.defineProperties(this,{direction:{enumerable:!0},viewTransition:{enumerable:!0},swap:{enumerable:!0,writable:!0}})}}async function ie(e,t,n,o,r,a,u,f){const i=new oe(e,t,n,o,r,a,window.document,u,f);return document.dispatchEvent(i)&&(await i.loader(),i.defaultPrevented||(ne(Z),i.navigationType!=="traverse"&&P({scrollX,scrollY}))),i}async function se(e,t,n){const o=new re(e,t,n);return document.dispatchEvent(o),o.swap(),o}const ae=history.pushState.bind(history),E=history.replaceState.bind(history),P=e=>{history.state&&(history.scrollRestoration="manual",E({...history.state,...e},""))},k=!!document.startViewTransition,I=()=>!!document.querySelector('[name="astro-view-transitions-enabled"]'),C=(e,t)=>e.pathname===t.pathname&&e.search===t.search;let L,p,A=!1,U;const B=e=>document.dispatchEvent(new Event(e)),V=()=>B("astro:page-load"),ce=()=>{let e=document.createElement("div");e.setAttribute("aria-live","assertive"),e.setAttribute("aria-atomic","true"),e.className="astro-route-announcer",document.body.append(e),setTimeout(()=>{let t=document.title||document.querySelector("h1")?.textContent||location.pathname;e.textContent=t},60)},w="data-astro-transition-persist",W="data-astro-transition",X="data-astro-transition-fallback";let H,b=0;history.state?(b=history.state.index,scrollTo({left:history.state.scrollX,top:history.state.scrollY})):I()&&(E({index:b,scrollX,scrollY},""),history.scrollRestoration="manual");const le=(e,t)=>{let n=!1,o=!1;return(...r)=>{if(n){o=!0;return}e(...r),n=!0,setTimeout(()=>{o&&(o=!1,e(...r)),n=!1},t)}};async function ue(e,t){try{const n=await fetch(e,t),r=(n.headers.get("content-type")??"").split(";",1)[0].trim();return r!=="text/html"&&r!=="application/xhtml+xml"?null:{html:await n.text(),redirected:n.redirected?n.url:void 0,mediaType:r}}catch{return null}}function Y(){const e=document.querySelector('[name="astro-view-transitions-fallback"]');return e?e.getAttribute("content"):"animate"}function fe(){let e=Promise.resolve();for(const t of Array.from(document.scripts)){if(t.dataset.astroExec==="")continue;const n=document.createElement("script");n.innerHTML=t.innerHTML;for(const o of t.attributes){if(o.name==="src"){const r=new Promise(a=>{n.onload=a});e=e.then(()=>r)}n.setAttribute(o.name,o.value)}n.dataset.astroExec="",t.replaceWith(n)}return e}const K=(e,t,n,o,r)=>{const a=C(t,e),u=document.title;document.title=o;let f=!1;if(e.href!==location.href&&!r)if(n.history==="replace"){const i=history.state;E({...n.state,index:i.index,scrollX:i.scrollX,scrollY:i.scrollY},"",e.href)}else ae({...n.state,index:++b,scrollX:0,scrollY:0},"",e.href);if(L=e,a||(scrollTo({left:0,top:0,behavior:"instant"}),f=!0),r)scrollTo(r.scrollX,r.scrollY);else{if(e.hash){history.scrollRestoration="auto";const i=history.state;location.href=e.href,history.state||E(i,"")}else f||scrollTo({left:0,top:0,behavior:"instant"});history.scrollRestoration="manual"}document.title=u};function de(e){const t=[];for(const n of e.querySelectorAll("head link[rel=stylesheet]"))if(!document.querySelector(`[${w}="${n.getAttribute(w)}"], link[rel=stylesheet][href="${n.getAttribute("href")}"]`)){const o=document.createElement("link");o.setAttribute("rel","preload"),o.setAttribute("as","style"),o.setAttribute("href",n.getAttribute("href")),t.push(new Promise(r=>{["load","error"].forEach(a=>o.addEventListener(a,r)),document.head.append(o)}))}return t}async function M(e,t,n,o){const r=(s,d)=>{const h=s.getAttribute(w),g=h&&d.head.querySelector(`[${w}="${h}"]`);if(g)return g;if(s.matches("link[rel=stylesheet]")){const T=s.getAttribute("href");return d.head.querySelector(`link[rel=stylesheet][href="${T}"]`)}return null},a=()=>{const s=document.activeElement;if(s?.closest(`[${w}]`)){if(s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement){const d=s.selectionStart,h=s.selectionEnd;return{activeElement:s,start:d,end:h}}return{activeElement:s}}else return{activeElement:null}},u=({activeElement:s,start:d,end:h})=>{s&&(s.focus(),(s instanceof HTMLInputElement||s instanceof HTMLTextAreaElement)&&(s.selectionStart=d,s.selectionEnd=h))},f=s=>{const d=document.documentElement,h=[...d.attributes].filter(({name:c})=>(d.removeAttribute(c),c.startsWith("data-astro-")));[...s.newDocument.documentElement.attributes,...h].forEach(({name:c,value:l})=>d.setAttribute(c,l));for(const c of document.scripts)for(const l of s.newDocument.scripts)if(!c.src&&c.textContent===l.textContent||c.src&&c.type===l.type&&c.src===l.src){l.dataset.astroExec="";break}for(const c of Array.from(document.head.children)){const l=r(c,s.newDocument);l?l.remove():c.remove()}document.head.append(...s.newDocument.head.children);const g=document.body,T=a();document.body.replaceWith(s.newDocument.body);for(const c of g.querySelectorAll(`[${w}]`)){const l=c.getAttribute(w),R=document.querySelector(`[${w}="${l}"]`);R&&R.replaceWith(c)}u(T)};async function i(s){function d(c){const l=c.effect;return!l||!(l instanceof KeyframeEffect)||!l.target?!1:window.getComputedStyle(l.target,l.pseudoElement).animationIterationCount==="infinite"}const h=document.getAnimations();document.documentElement.setAttribute(X,s);const T=document.getAnimations().filter(c=>!h.includes(c)&&!d(c));return Promise.all(T.map(c=>c.finished))}if(!A)document.documentElement.setAttribute(W,e.direction),o==="animate"&&await i("old");else throw new DOMException("Transition was skipped");const m=document.title,y=await se(e,p,f);K(y.to,y.from,t,m,n),B(te),o==="animate"&&!A&&i("new").then(()=>U())}async function j(e,t,n,o,r){if(!I()||location.origin!==n.origin){location.href=n.href;return}const a=r?"traverse":o.history==="replace"?"replace":"push";if(a!=="traverse"&&P({scrollX,scrollY}),C(t,n)&&n.hash){K(n,t,o,document.title,r);return}const u=await ie(t,n,e,a,o.sourceElement,o.info,o.formData,f);if(u.defaultPrevented){location.href=n.href;return}async function f(i){const m=i.to.href,y={};if(i.formData){y.method="POST";const h=i.sourceElement instanceof HTMLFormElement?i.sourceElement:i.sourceElement instanceof HTMLElement&&"form"in i.sourceElement?i.sourceElement.form:i.sourceElement?.closest("form");y.body=h?.attributes.getNamedItem("enctype")?.value==="application/x-www-form-urlencoded"?new URLSearchParams(i.formData):i.formData}const s=await ue(m,y);if(s===null){i.preventDefault();return}if(s.redirected&&(i.to=new URL(s.redirected)),H??=new DOMParser,i.newDocument=H.parseFromString(s.html,s.mediaType),i.newDocument.querySelectorAll("noscript").forEach(h=>h.remove()),!i.newDocument.querySelector('[name="astro-view-transitions-enabled"]')&&!i.formData){i.preventDefault();return}const d=de(i.newDocument);d.length&&await Promise.all(d)}if(A=!1,k)p=document.startViewTransition(async()=>await M(u,o,r));else{const i=(async()=>{await new Promise(m=>setTimeout(m)),await M(u,o,r,Y())})();p={updateCallbackDone:i,ready:i,finished:new Promise(m=>U=m),skipTransition:()=>{A=!0}}}p.ready.then(async()=>{await fe(),V(),ce()}),p.finished.then(()=>{document.documentElement.removeAttribute(W),document.documentElement.removeAttribute(X)}),await p.ready}async function N(e,t){await j("forward",L,new URL(e,location.href),t??{})}function me(e){if(!I()&&e.state){location.reload();return}if(e.state===null)return;const t=history.state,n=t.index,o=n>b?"forward":"back";b=n,j(o,L,new URL(location.href),{},t)}const F=()=>{P({scrollX,scrollY})};{(k||Y()!=="none")&&(L=new URL(location.href),addEventListener("popstate",me),addEventListener("load",V),"onscrollend"in window?addEventListener("scrollend",F):addEventListener("scroll",le(F,350),{passive:!0}));for(const e of document.scripts)e.dataset.astroExec=""}const G=new Set,S=new WeakSet;let x,z,$=!1;function he(e){$||($=!0,x??=e?.prefetchAll??!1,z??=e?.defaultStrategy??"hover",we(),ye(),pe(),Te())}function we(){for(const e of["touchstart","mousedown"])document.body.addEventListener(e,t=>{v(t.target,"tap")&&D(t.target.href,{with:"fetch",ignoreSlowConnection:!0})},{passive:!0})}function ye(){let e;document.body.addEventListener("focusin",o=>{v(o.target,"hover")&&t(o)},{passive:!0}),document.body.addEventListener("focusout",n,{passive:!0}),O(()=>{for(const o of document.getElementsByTagName("a"))S.has(o)||v(o,"hover")&&(S.add(o),o.addEventListener("mouseenter",t,{passive:!0}),o.addEventListener("mouseleave",n,{passive:!0}))});function t(o){const r=o.target.href;e&&clearTimeout(e),e=setTimeout(()=>{D(r,{with:"fetch"})},80)}function n(){e&&(clearTimeout(e),e=0)}}function pe(){let e;O(()=>{for(const t of document.getElementsByTagName("a"))S.has(t)||v(t,"viewport")&&(S.add(t),e??=ge(),e.observe(t))})}function ge(){const e=new WeakMap;return new IntersectionObserver((t,n)=>{for(const o of t){const r=o.target,a=e.get(r);o.isIntersecting?(a&&clearTimeout(a),e.set(r,setTimeout(()=>{n.unobserve(r),e.delete(r),D(r.href,{with:"link"})},300))):a&&(clearTimeout(a),e.delete(r))}})}function Te(){O(()=>{for(const e of document.getElementsByTagName("a"))v(e,"load")&&D(e.href,{with:"link"})})}function D(e,t){const n=t?.ignoreSlowConnection??!1;if(!be(e,n))return;if(G.add(e),(t?.with??"link")==="link"){const r=document.createElement("link");r.rel="prefetch",r.setAttribute("href",e),document.head.append(r)}else fetch(e).catch(r=>{console.log(`[astro] Failed to prefetch ${e}`),console.error(r)})}function be(e,t){if(!navigator.onLine||!t&&J())return!1;try{const n=new URL(e,location.href);return location.origin===n.origin&&(location.pathname!==n.pathname||location.search!==n.search)&&!G.has(e)}catch{}return!1}function v(e,t){if(e?.tagName!=="A")return!1;const n=e.dataset.astroPrefetch;return n==="false"?!1:t==="tap"&&(n!=null||x)&&J()?!0:n==null&&x||n===""?t===z:n===t}function J(){if("connection"in navigator){const e=navigator.connection;return e.saveData||/2g/.test(e.effectiveType)}return!1}function O(e){e();let t=!1;document.addEventListener("astro:page-load",()=>{if(!t){t=!0;return}e()})}function ve(){const e=document.querySelector('[name="astro-view-transitions-fallback"]');return e?e.getAttribute("content"):"animate"}function _(e){return e.dataset.astroReload!==void 0}(k||ve()!=="none")&&(document.addEventListener("click",e=>{let t=e.target;if(t instanceof Element&&(t=t.closest("a, area")),!(t instanceof HTMLAnchorElement)&&!(t instanceof SVGAElement)&&!(t instanceof HTMLAreaElement))return;const n=t instanceof HTMLElement?t.target:t.target.baseVal,o=t instanceof HTMLElement?t.href:t.href.baseVal,r=new URL(o,location.href).origin;_(t)||t.hasAttribute("download")||!t.href||n&&n!=="_self"||r!==location.origin||e.button!==0||e.metaKey||e.ctrlKey||e.altKey||e.shiftKey||e.defaultPrevented||(e.preventDefault(),N(o,{history:t.dataset.astroHistory==="replace"?"replace":"auto",sourceElement:t}))}),document.addEventListener("submit",e=>{let t=e.target;if(t.tagName!=="FORM"||e.defaultPrevented||_(t))return;const n=t,o=e.submitter,r=new FormData(n,o);let a=o?.getAttribute("formaction")??n.action??location.pathname;const u=o?.getAttribute("formmethod")??n.method;if(u==="dialog")return;const f={sourceElement:o??n};if(u==="get"){const i=new URLSearchParams(r),m=new URL(a);m.search=i.toString(),a=m.toString()}else f.formData=r;e.preventDefault(),N(a,f)}),he({prefetchAll:!0})); diff --git a/dist/_astro/index.a6ymtXr2.css b/dist/_astro/index.a6ymtXr2.css new file mode 100644 index 0000000..cc1f56d --- /dev/null +++ b/dist/_astro/index.a6ymtXr2.css @@ -0,0 +1 @@ +.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}body{font-family:Lato,sans-serif;font-size:18px;line-height:1.65;font-weight:400;color:#2c3145;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}@media (prefers-color-scheme: dark){body{color:#c7c9db}}h1,h2,h3,h4,h5{line-height:1.2;margin:1em 0 .5em;color:#0e1016;font-weight:700}@media (prefers-color-scheme: dark){h1,h2,h3,h4,h5{color:#fff}}h1{font-size:3.052em}h2{font-size:2.441em}h3{font-size:1.953em}h4{font-size:1.563em}h5{font-size:1.25em}p{margin:0 0 1em}code{font-family:Source Code Pro,monospace}b,strong{font-weight:700;color:#fff;color:#0e1016}@media (prefers-color-scheme: dark){b,strong{color:#fff}}*{box-sizing:border-box}body{margin:0 auto;padding:0 1em;width:1040px;max-width:100%;background-color:#fff}@media (prefers-color-scheme: dark){body{background-color:#020002}}@media (max-width: 768px){body{font-size:16px}}.glow{width:100%;height:100%;position:absolute;z-index:-1;top:0;left:0;overflow:hidden}.glow:after{content:"";display:block;position:absolute;top:-120px;left:calc(50% - 360px);width:720px;height:240px;background:radial-gradient(50% 50% at 50% 50%,#df7f4f33,#df7f4f00)}@media (prefers-color-scheme: dark){.glow:after{background:radial-gradient(50% 50% at 50% 50%,#ffffff0f,#fff0)}}::selection{background:#f2cab7}@media (prefers-color-scheme: dark){::selection{background:#d05f26}}a,a:visited{color:#d05f26;transition:.1s ease}@media (prefers-color-scheme: dark){a,a:visited{color:#ecb194}}a:hover,a:visited:hover{color:#df7f4f}hr{margin:1em 0;border:0;border-bottom:1px solid #e6e7ef}@media (prefers-color-scheme: dark){hr{border-color:#181b26}}nav{display:flex;align-items:center;justify-content:space-between;margin:0 0 2em;padding:2em 0}nav a{transition:.1s ease}nav a:hover{opacity:.6}nav #site_title{margin:0}nav #site_title a{display:flex;align-items:center;gap:10px;color:#0e1016;font-size:16px;font-weight:700;letter-spacing:2px;line-height:1;text-decoration:none;text-transform:uppercase}@media (prefers-color-scheme: dark){nav #site_title a{color:#fff}}nav .links a{margin-left:1em;color:#2c3145}@media (prefers-color-scheme: dark){nav .links a{color:#c7c9db}}.content ol,.content ul{padding-left:2em;margin-bottom:1em}.content ul{list-style:none}.content ul li{position:relative;margin-bottom:.75em}.content ul li:before{content:"";display:block;position:absolute;left:-1em;top:.63em;width:8px;height:8px;background:linear-gradient(25deg,#9818e7,#df7f4f);border-radius:99px}.page_title{margin:1.5em 0}@media (max-width: 768px){.page_title{margin:.5em 0}}.posts{list-style:none;padding:0}.post{display:flex;width:100%}@media (max-width: 768px){.post{flex-flow:column}}.post:last-child .content,.post.single .content{border-bottom:0}.version_wrapper{flex-basis:260px;flex-grow:0;flex-shrink:0;margin:4.5em 0 0}@media (max-width: 1040px){.version_wrapper{flex-basis:140px}}@media (max-width: 768px){.version_wrapper{flex-basis:0;margin-top:2em}}.version_wrapper .version_info{position:sticky;top:1em}@media (max-width: 768px){.version_wrapper .version_info{position:relative;top:0}}.version_wrapper a{float:left;color:#fff;text-decoration:none;transition:.1s ease}.version_wrapper a:hover{opacity:.6}.version_number{display:inline-block;font-family:Source Code Pro,monospace;line-height:1;margin-bottom:8px;padding:4px 12px;color:#fff;background:linear-gradient(25deg,#3a084e,#5b0e81,#bc4c9b,#df7f4f);border-radius:8px}.date{clear:both;color:#2c3145;font-family:Source Code Pro,monospace;font-size:15px}@media (max-width: 768px){.date{display:inline;margin-left:1em}}@media (prefers-color-scheme: dark){.date{color:#c7c9db}}.content{margin:0;padding:4em 0;border-bottom:1px solid #e6e7ef}@media (max-width: 768px){.content{margin:1em 0;padding:0 0 2em}}@media (prefers-color-scheme: dark){.content{border-color:#181b26}}.content *:first-child{margin-top:0}.content img{max-width:100%;height:auto;border-radius:12px;border:1px solid #c7c9db}@media (prefers-color-scheme: dark){.content img{border-color:#2c3145}}footer{display:flex;padding:2em 0;color:#6a71a0;justify-content:space-between;border-top:1px solid #e6e7ef}@media (max-width: 768px){footer{padding:1em 0}}@media (prefers-color-scheme: dark){footer{border-color:#181b26}}footer a{margin-left:1em;color:#6a71a0;text-decoration:none}footer a:hover{color:#6a71a0;opacity:.6}.links[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{text-decoration:none} diff --git a/static/img/favicon.ico b/dist/favicon.ico similarity index 100% rename from static/img/favicon.ico rename to dist/favicon.ico diff --git a/dist/index.html b/dist/index.html new file mode 100644 index 0000000..7b0791a --- /dev/null +++ b/dist/index.html @@ -0,0 +1,60 @@ + +

Changelogs


  • Ellie Bot v4.3.18

    +

    Added

    +
      +
    • Added 'cacheusers command
    • +
    • Added 'clubreject which lets you reject club applications
    • +
    +

    Fixed

    +
      +
    • Fixed icon_url when using 'showembed
    • +
    • Fixed 'quoteshow not showing sometimes
    • +
    • Notifications will no longer be sent if dms are off when using 'give
    • +
    • Users should no longer be able to apply to clubs while in a club already (especially not to the same club they’re already in)
    • +
    +

    Removed

    +
      +
    • 'revimg and 'revav as google removed reverse image search
    • +
  • Ellie Bot v4.3.17

    +

    Fixed

    +
      +
    • Fix to waifu gifts being character limited
    • +
    • Fixes UserUpdated and UserPresence not correctly ignoring users that are logignored
    • +
\ No newline at end of file diff --git a/dist/releases/4_3_17/index.html b/dist/releases/4_3_17/index.html new file mode 100644 index 0000000..ba2a34f --- /dev/null +++ b/dist/releases/4_3_17/index.html @@ -0,0 +1,44 @@ + +
4.3.17

Ellie Bot v4.3.17

+

Fixed

+
    +
  • Fix to waifu gifts being character limited
  • +
  • Fixes UserUpdated and UserPresence not correctly ignoring users that are logignored
  • +
\ No newline at end of file diff --git a/dist/releases/4_3_18/index.html b/dist/releases/4_3_18/index.html new file mode 100644 index 0000000..fb43e03 --- /dev/null +++ b/dist/releases/4_3_18/index.html @@ -0,0 +1,55 @@ + +
4.3.18

Ellie Bot v4.3.18

+

Added

+
    +
  • Added 'cacheusers command
  • +
  • Added 'clubreject which lets you reject club applications
  • +
+

Fixed

+
    +
  • Fixed icon_url when using 'showembed
  • +
  • Fixed 'quoteshow not showing sometimes
  • +
  • Notifications will no longer be sent if dms are off when using 'give
  • +
  • Users should no longer be able to apply to clubs while in a club already (especially not to the same club they’re already in)
  • +
+

Removed

+
    +
  • 'revimg and 'revav as google removed reverse image search
  • +
\ No newline at end of file diff --git a/docusaurus.config.js b/docusaurus.config.js deleted file mode 100644 index 674a45e..0000000 --- a/docusaurus.config.js +++ /dev/null @@ -1,130 +0,0 @@ -// @ts-check -// Note: type annotations allow type checking and IDEs autocompletion - -const lightCodeTheme = require('prism-react-renderer/themes/github'); -const darkCodeTheme = require('prism-react-renderer/themes/dracula'); - -/** @type {import('@docusaurus/types').Config} */ -const config = { - title: 'Ellie patchnotes', - tagline: 'Ellie patch notes', - url: 'https://patchnotes.elliebot.net', - baseUrl: '/', - onBrokenLinks: 'throw', - onBrokenMarkdownLinks: 'warn', - favicon: 'img/favicon.ico', - trailingSlash: false, - - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - organizationName: 'EllieBotDevs', // Usually your GitHub org/user name. - projectName: 'ellie-patchnotes', // Usually your repo name. - - // Even if you don't use internalization, you can use this field to set useful - // metadata like html lang. For example, if your site is Chinese, you may want - // to replace "en" with "zh-Hans". - i18n: { - defaultLocale: 'en', - locales: ['en'], - }, - - presets: [ - [ - 'classic', - /** @type {import('@docusaurus/preset-classic').Options} */ - ({ - docs: false, - blog: { - routeBasePath: '/', - showReadingTime: true, - readingTime: ({content, frontMatter, defaultReadingTime}) => - frontMatter.hide_reading_time ? undefined : defaultReadingTime({content}), - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - editUrl: - 'https://github.com/EllieBotDevs/ellie-patchnotes/tree/dev/blog', - blogTitle: 'Ellie patchnotes', - blogDescription: 'Here you can find the patch notes for Ellie', - postsPerPage: 'ALL', - feedOptions: { - type: 'all', - copyright: `Copyright © ${new Date().getFullYear()} EllieBotDevs.`, - }, - }, - theme: { - customCss: require.resolve('./src/css/custom.css'), - }, - }), - ], - ], - - themeConfig: - /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ - ({ - navbar: { - title: 'Ellie patchnotes', - logo: { - alt: 'Ellie patchnotes', - src: 'img/favicon.ico', - }, - items: [ - { - href: 'https://github.com/EllieBotDevs/ellie-patchnotes', - label: 'GitHub', - position: 'right', - }, - ], - }, - footer: { - style: 'dark', - links: [ - { - title: 'Our other sites', - items: [ - { - label: 'Documentation Site', - to: 'https://docs.elliebot.net', - }, - { - label: 'Ellie blog', - to: 'https://blog.elliebot.net', - }, - { - label: 'Main site', - to: 'https://elliebot.net', - } - ], - }, - { - title: 'Community', - items: [ - { - label: 'Discord', - href: 'https://discord.com/invite/SVQVzJq', - }, - { - label: 'Twitter', - href: 'https://twitter.com/Computergeex5', - }, - ], - }, - { - title: 'More', - items: [ - { - label: 'GitHub', - href: 'https://github.com/EllieBotDevs/ellie-patchnotes', - }, - ], - }, - ], - copyright: `Copyright © ${new Date().getFullYear()} EllieBotDevs.`, - }, - prism: { - theme: lightCodeTheme, - darkTheme: darkCodeTheme, - }, - }), -}; - -module.exports = config; diff --git a/package.json b/package.json index ee59841..214f67b 100644 --- a/package.json +++ b/package.json @@ -1,41 +1,19 @@ { "name": "ellie-patchnotes", - "version": "0.0.0", - "private": true, + "type": "module", + "version": "0.0.1", "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" + "dev": "astro dev", + "start": "astro dev", + "build": "astro check && astro build", + "preview": "astro preview", + "astro": "astro" }, "dependencies": { - "@docusaurus/core": "2.4.1", - "@docusaurus/preset-classic": "2.4.1", - "@docusaurus/types": "^2.4.1", - "@mdx-js/react": "^1.6.22", - "clsx": "^1.1.1", - "prism-react-renderer": "^1.3.1", - "react": "^17.0.2", - "react-dom": "^17.0.2" - }, - "devDependencies": { - "@docusaurus/module-type-aliases": "2.4.1" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] + "@astrojs/check": "^0.4.0", + "astro": "^4.1.1", + "sass": "^1.69.5", + "sharp": "^0.32.5", + "typescript": "^5.3.3" } } \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..f35e7f2 Binary files /dev/null and b/public/favicon.ico differ diff --git a/sidebars.js b/sidebars.js deleted file mode 100644 index fd342f2..0000000 --- a/sidebars.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ - -// @ts-check - -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ -const sidebars = { - // By default, Docusaurus generates a sidebar from the docs folder structure - tutorialSidebar: [{type: 'autogenerated', dirName: '.'}], - - // But you can create a sidebar manually - /* - tutorialSidebar: [ - { - type: 'category', - label: 'Tutorial', - items: ['hello'], - }, - ], - */ -}; - -module.exports = sidebars; diff --git a/src/assets/starlog-placeholder-14.jpg b/src/assets/starlog-placeholder-14.jpg new file mode 100644 index 0000000..e2e0acb Binary files /dev/null and b/src/assets/starlog-placeholder-14.jpg differ diff --git a/src/assets/starlog-placeholder-18.jpg b/src/assets/starlog-placeholder-18.jpg new file mode 100644 index 0000000..211c85c Binary files /dev/null and b/src/assets/starlog-placeholder-18.jpg differ diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro new file mode 100644 index 0000000..e32945c --- /dev/null +++ b/src/components/BaseHead.astro @@ -0,0 +1,19 @@ +--- +import { ViewTransitions } from 'astro:transitions'; +import SEO, { type Props as SEOProps } from './SEO.astro'; +import { SiteTitle, SiteDescription } from '../consts'; + +export type Props = Partial; +const { title = SiteTitle, name = SiteTitle, description = SiteDescription, ...seo } = Astro.props; +--- + + + + + + + + diff --git a/src/components/Footer.astro b/src/components/Footer.astro new file mode 100644 index 0000000..4cc64f4 --- /dev/null +++ b/src/components/Footer.astro @@ -0,0 +1,11 @@ +--- +import '../styles/global.scss'; +--- + + diff --git a/src/components/FormattedDate.astro b/src/components/FormattedDate.astro new file mode 100644 index 0000000..377286d --- /dev/null +++ b/src/components/FormattedDate.astro @@ -0,0 +1,25 @@ +--- +import type { HTMLAttributes } from 'astro/types'; + +type Props = HTMLAttributes<'time'> & { + date: Date; +}; + +const { date, ...attrs } = Astro.props; +--- + + + + diff --git a/src/components/Header.astro b/src/components/Header.astro new file mode 100644 index 0000000..25f75cc --- /dev/null +++ b/src/components/Header.astro @@ -0,0 +1,23 @@ +--- +import '../styles/global.scss'; +import { SiteTitle } from '../consts'; +--- + +
+ +
+ + diff --git a/src/components/HomepageFeatures/index.js b/src/components/HomepageFeatures/index.js deleted file mode 100644 index 78f410b..0000000 --- a/src/components/HomepageFeatures/index.js +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; -import styles from './styles.module.css'; - -const FeatureList = [ - { - title: 'Easy to Use', - Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, - description: ( - <> - Docusaurus was designed from the ground up to be easily installed and - used to get your website up and running quickly. - - ), - }, - { - title: 'Focus on What Matters', - Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, - description: ( - <> - Docusaurus lets you focus on your docs, and we'll do the chores. Go - ahead and move your docs into the docs directory. - - ), - }, - { - title: 'Powered by React', - Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, - description: ( - <> - Extend or customize your website layout by reusing React. Docusaurus can - be extended while reusing the same header and footer. - - ), - }, -]; - -function Feature({Svg, title, description}) { - return ( -
-
- -
-
-

{title}

-

{description}

-
-
- ); -} - -export default function HomepageFeatures() { - return ( -
-
-
- {FeatureList.map((props, idx) => ( - - ))} -
-
-
- ); -} diff --git a/src/components/HomepageFeatures/styles.module.css b/src/components/HomepageFeatures/styles.module.css deleted file mode 100644 index b248eb2..0000000 --- a/src/components/HomepageFeatures/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} diff --git a/src/components/SEO.astro b/src/components/SEO.astro new file mode 100644 index 0000000..1e2ddcc --- /dev/null +++ b/src/components/SEO.astro @@ -0,0 +1,87 @@ +--- +import type { ImageMetadata } from 'astro'; +type Image = { + src: string | ImageMetadata; + alt: string; +}; + +type SEOMetadata = { + name: string; + title: string; + description: string; + image?: Image | undefined; + canonicalURL?: URL | string | undefined; + locale?: string; +}; + +type OpenGraph = Partial & { + type?: string; +}; + +type Twitter = Partial & { + handle?: string; + card?: 'summary' | 'summary_large_image'; +}; + +export type Props = SEOMetadata & { + og?: OpenGraph; + twitter?: Twitter; +}; + +const { + name, + title, + description, + image, + locale = 'en', + canonicalURL = new URL(Astro.url.pathname, Astro.site), +} = Astro.props; + +const og = { + name, + title, + description, + canonicalURL, + image, + locale, + type: 'website', + ...(Astro.props.og ?? {}), +} satisfies OpenGraph; + +const twitter = { + name, + title, + description, + canonicalURL, + image, + locale, + card: 'summary_large_image', + ...Astro.props.twitter, +}; + +function normalizeImageUrl(image: string | ImageMetadata) { + return typeof image === 'string' ? image : image.src; +} +--- + + + + + + + + + + + + +{og.image && } +{og.image && } + + + + + + +{twitter.image && } +{twitter.image && } diff --git a/src/consts.ts b/src/consts.ts new file mode 100644 index 0000000..964ae6d --- /dev/null +++ b/src/consts.ts @@ -0,0 +1,5 @@ +// Place any global data in this file. +// You can import this data from anywhere in your site by using the `import` keyword. + +export const SiteTitle = 'Ellie Notes'; +export const SiteDescription = 'The patchnotes of EllieBot!'; diff --git a/src/content/config.ts b/src/content/config.ts new file mode 100644 index 0000000..0c766cd --- /dev/null +++ b/src/content/config.ts @@ -0,0 +1,15 @@ +import { defineCollection, z } from 'astro:content'; + +const releases = defineCollection({ + // Type-check frontmatter using a schema + schema: + z.object({ + title: z.string(), + description: z.string(), + versionNumber: z.string(), + // Transform string to Date object + date: z.date({ coerce: true }), + }), +}); + +export const collections = { releases }; diff --git a/src/content/releases/4_3_17.md b/src/content/releases/4_3_17.md new file mode 100644 index 0000000..a911a00 --- /dev/null +++ b/src/content/releases/4_3_17.md @@ -0,0 +1,13 @@ +--- +title: 'Ellie Bot 4.3.17!' +date: '2023-09-06' +versionNumber: '4.3.17' +description: 'Ellie Bot version 4.3.17 release notes.' +--- + +## Ellie Bot v4.3.17 + +### Fixed + +- Fix to waifu gifts being character limited +- Fixes UserUpdated and UserPresence not correctly ignoring users that are logignored diff --git a/src/content/releases/4_3_18.md b/src/content/releases/4_3_18.md new file mode 100644 index 0000000..d2a9bae --- /dev/null +++ b/src/content/releases/4_3_18.md @@ -0,0 +1,24 @@ +--- +title: 'Ellie Bot 4.3.18!' +date: '2023-12-26' +versionNumber: '4.3.18' +description: 'Ellie Bot version 4.3.18 release notes.' +--- + +## Ellie Bot v4.3.18 + +### Added + +- Added `'cacheusers` command +- Added `'clubreject` which lets you reject club applications + +### Fixed + +- Fixed `icon_url` when using `'showembed` +- Fixed `'quoteshow` not showing sometimes +- Notifications will no longer be sent if dms are off when using `'give` +- Users should no longer be able to apply to clubs while in a club already (especially not to the same club they're already in) + +### Removed + +- `'revimg` and `'revav` as google removed reverse image search diff --git a/src/css/custom.css b/src/css/custom.css deleted file mode 100644 index 2bc6a4c..0000000 --- a/src/css/custom.css +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* You can override the default Infima variables here. */ -:root { - --ifm-color-primary: #2e8555; - --ifm-color-primary-dark: #29784c; - --ifm-color-primary-darker: #277148; - --ifm-color-primary-darkest: #205d3b; - --ifm-color-primary-light: #33925d; - --ifm-color-primary-lighter: #359962; - --ifm-color-primary-lightest: #3cad6e; - --ifm-code-font-size: 95%; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); -} - -/* For readability concerns, you should choose a lighter palette in dark mode. */ -[data-theme='dark'] { - --ifm-color-primary: #25c2a0; - --ifm-color-primary-dark: #21af90; - --ifm-color-primary-darker: #1fa588; - --ifm-color-primary-darkest: #1a8870; - --ifm-color-primary-light: #29d5b0; - --ifm-color-primary-lighter: #32d8b4; - --ifm-color-primary-lightest: #4fddbf; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); -} diff --git a/src/env.d.ts b/src/env.d.ts new file mode 100644 index 0000000..c13bd73 --- /dev/null +++ b/src/env.d.ts @@ -0,0 +1,2 @@ +/// +/// \ No newline at end of file diff --git a/src/layouts/IndexLayout.astro b/src/layouts/IndexLayout.astro new file mode 100644 index 0000000..3f0bd0c --- /dev/null +++ b/src/layouts/IndexLayout.astro @@ -0,0 +1,23 @@ +--- +import BaseHead, { type Props as HeadProps } from '../components/BaseHead.astro'; +import Header from '../components/Header.astro'; +import Footer from '../components/Footer.astro'; + +type Props = HeadProps; + +const { ...head } = Astro.props; +--- + + + + + + + +
+
+ +