File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44#/--------------------------------------------------/
55
66# development
7- DOTENV_VAULT_DEVELOPMENT="7zsgl0/F07jfHjNk34P39MzfyKi/1nYJJWR7ulq2actCgUt0t0rNGH7LZ4DUVc0iAhv/N0q4aX836WOr0KEgaDW7IInGke/jIDUOypqyQAuwZss3CbN7myQHbPVnrKmfAu2xJbJE/7jLZ2fMaZ1G1YOUMMkVTK8g21OZUCKfxF5UJlu6pzH1Hb67LIpkEk4ZzJxf4BqGDLXCaShzy3Hfk03U9aFY+gf3bY/k6j7jZ8PYdklxcdPRG4AFsa8jg0YVYOBQ4PCtczlgoxIZsZfqWqJVogJ39M2U3XMLfvhsLcQyMBQtBVipfGXTPzfTYjQIiLgtUtL14uDWyROvm/+/53I4uDMaUvVl6cfMhHlkY6wi2hhwe48jeCEYMXrxizEndpB+4aUHo48fP3Z3xJFE8lY8a1ZboMDDKFhJ61+SwmdnqWs8ir9eLb9AMsdxDEBUol+Tl0bxXiKy66c6wRZcTxZgFn6U71a1aABbuHSMzfH12O5sonK7AW+eOgJpILwvaQgkjBNQIY8z/joXASJDt4KLJL7Qw9G5cr4GVUvELcYutY3nA3aim9Ys5rWj3zyHxbEIS5Wh5tGO96lTDeu2GSmNZoT9VIsLAHltaGBerb15wpjveQWPmjlffkH0K96F2dSUvHWJo17gMDXfKwS4mwRCudw3HlVmJqjw3lKYwaORaQNJpdyl3b6PUdjnnKYkMFBMzc+VCE4Wa8VX3fw/cFUH5T1I2+XuvbGWZRpHQVZdOlI4SAIngZFMsXuKOpZ8hfAj/gjbYPoqHda26EVrreJ2a7HSYAjSDUDO0vSLUyzPu0gZvml38Co45Wwc8HvaMOGsV4Reew5WZTvZY/lo4BsheShSP9pGr2pf84sB+Ib8qubkw9hCXi1pb/FOkJ873YqeEkDJDI8Y0wbhPkGvB1Z5LBV50wxdJzfUM98rvbdoG6sWGd6uQesGtIOnaVDVdPcPgBEqsahLAcxlfjqsLBnrOZCL62H/D6gUHomz3/scHT/A/F7UwkSKIygNDKrFawwz5JF8Ga6V74NEXwDBLVOptbBmBsiGW+yjb/BxZahy"
8- DOTENV_VAULT_DEVELOPMENT_VERSION=2
7+ DOTENV_VAULT_DEVELOPMENT="XSrp7ITz2JptDK5jTcOuIBBTO4NjMyakpibgFVEIQLpa6mVYfkEkTiyESVs8ofuG7Z9yF5LRawOeHV77z4FgdqgJceFJ9VpNQHajJqoVr3RcJ38kruWXoQfxXHGJIZhGKO3ocPvFoBbEJsOj4e6SyCGi8RQc115p3jiLvPaGXnMBQrQBdTbHwf0K5CTNEkMmfa+Goe/uqB4ssN7VKpsgnfuF77fIzX0b6SEip3Wp4aRnwNl244v+tiRfGrGIxRCcjdxTiKa4Ic2hE51GSt1V7V6oli4fdWQ766kY4ekIUMyC5D4PzGDVtvLnoVYCHcEM0DKMMgyL2Iypm7ViOpN7YCwf/eRWot0XmO8zy+Ui6F0sEDeTBAa3+OO5b+9uzGxuvcJsb1v5QSHpR3fN1U7Eye6jFSV+5zrJQ1hb6bm2N2risQfoedwlKBhwhnTFb+6tR/xY6gQejZ5UfVjEr6zWRhWN9ZO9GOhgJU5XQV/xslIjkAhTGhUSRdEvXz3USOCZHvEGv/7wVP57vHUtAC5P5qepBvt44M+jXyXBq+CAcpqzNnjTg5t96Ef1slaXYeESyrmDbYnjfdTjGiB2ndW3mqR7NlltoQOUvYOddOHM/TfkhxEgaivwVBU7nYr7M/RlCLY7xcrlMpSq6Q2Rzq9eo2qOUZUxBI+YqpUO0Rx3ynJVhPlnwbYDJpPK61K/0FsZniKcXy1VWmfL4kt5P8L0M7N2SqMtxdRxceVvnlEswfL6zdBaBjnh4be/cn4p8bgfmY5QcI3mfWsFPXkZeOtONYjwl1Zh8ZX82NyX6ksmhXj/63d8Rvyl4ADG92SJOHS8f/wWR4Wcy/7xlHHHv9lvYxepzHo3HrAorfIuNiuWZBmXrT3C9AdD+aiWxEVifUZmS1q97LwTSH2F1gjGXOKqH8K8iYtlgs7O3yxj849vva8tMNrrIauM+VzhwGyg/7KTC7th/cV9T8yGFI5mmHpBhXY81tZ9UJfWOxQAhPfue8fZkQy7OWZ4Y1HmtSYB0bVC+2Tbxo2YtQS+MRV+fF3dQDJY+lw2YNYZE+uCaUJ+2OmM0bmv"
8+ DOTENV_VAULT_DEVELOPMENT_VERSION=3
99
1010# ci
1111DOTENV_VAULT_CI="CVcgOI7SE17ikq+lZ9ZpYRIzmG1q/BicO5JrK0Ug8A2UCIx3e+UJT1N8AYC1o7TP0Ju04iGKsS/enQB4gFpqqXtk7i2cXyIUAX7ad2wRvDF3jytQfzKO1GQ/vItviBlW11cIpINuuyM8fw=="
@@ -16,8 +16,8 @@ DOTENV_VAULT_STAGING="/Ir76mvn7x1JAypiwjNfGdUK5Lfq4x6dUlwJF6pRVNbqhi5nlqobceiWYg
1616DOTENV_VAULT_STAGING_VERSION=2
1717
1818# production
19- DOTENV_VAULT_PRODUCTION="2A2FX0HOoj5DwI51hRk+PMvaoTjMD5neA0eULh8zRj3zd3ZbV4ydtonR9crDqsNgI4FVansJzPLHAlThoFaimexowDezBPml82vpDK6/hHc/wRUXiugKxU94j+FvhCK7w6hXOUvR0ThYMg=="
20- DOTENV_VAULT_PRODUCTION_VERSION=2
19+ DOTENV_VAULT_PRODUCTION="U5L6Ym+LsJcp6Xr7V7z6kTIBKAK0iZJOhRoJkBLuZaH+SVSm44XhQArntfru/LqlXQ5vAVOZO1HX/D6DYrEMFy0jeoTmfb+xXlrJ9H/MPFeZi0y7a0nTPAeo83egTRWR52ivFiB1EaQvbrmiOavcAFzikRkTzrKa39pM09QnrGAPXUHQJ4/qhmGJC4M/Yb6a+LW0ASOa4qjk1quTHhUjdayoLV0Tzf+4aUD7qo5SCyhvzwqNinXNmtzHFtcyODtqaZ/DzfB2DM8kcgr7A5018cO0uZCZ0XfygbG1QyUZy/tScKgSlN1YWdqSFDpTrll4xcKLWWeWnu3w2IeqvulP7D27nmppG+G7eiufFL8z+8Fw8/Ks/UXwBeVI+pf6PYilp3GJjy/lvpnLYyT8VRIRIlRXq3pS5jrbG7Li46nx+yw1LK5iIY4xSSfVy9CpQmW7jurg09ApTdA0lfk5WQKfrd2k4b24tkqztYJNu9LDxNupXEuSgC4QBnxei9Pp0ClIiIoUQRdtulEke/LlIbyQ0uCmbL7N0cwqI5F9qwhjxZm0TFQSVthDdbTgMZfmfiTbREyy9Sxq9OJJGVF2bncVZ0xrAYCAmgkq7ELugUc6Uzl6P7mjzAiRaP47tbhnWKIhnfidnHigwVj2WNqeeuuZOI5a2FyXZX4rhKVunqIqrIv0S/aMfT/TpCIkBbJM8aQH/hf732D5Qx5YclRo5QmOehoXniJF64cn0PedIAaPtvapedXUARg2mynSMeWE2RE1AlBH9BGxWiCeBT2EgMDCfi5GMbtJav2bt0yjdV8Kge3k1ZpTVjJYvCYFZ0U0yLTW4L9LfI17wa29c0FfJPjMxn3GhKI6XMQ9VrJ7heBzHSRO6ujho+TOJMUCOYwuZhs/215WbdPHCiJp3Y2/zqe/EcmIo42vz1cbgz5cLGk8BJgfEXypucQcHIurKQUJIVZZuK2BoeOO+z1HfG8ts4MmGHnALtBo2Rxa1mNpEUaTyqOpBoKU9l97s8gULvXnzlRjpEnnG3NLW3lxkU8BjGRbSyvTQyKypq8yVn3GZR4NTgyg"
20+ DOTENV_VAULT_PRODUCTION_VERSION=3
2121
2222#/----------------settings/metadata-----------------/
2323DOTENV_VAULT="vlt_dfb9dd1fde825ce5fc9bd781258f1f8648449be3a5b1996abcf9faa572b8dc44"
Original file line number Diff line number Diff line change @@ -5,7 +5,7 @@ RUN corepack enable
55COPY . /app
66WORKDIR /app
77
8- FROM base as deps
8+ FROM base AS deps
99RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm fetch --frozen-lockfile
1010RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile
1111
@@ -17,5 +17,5 @@ RUN pnpm run build
1717FROM base
1818COPY --from=deps /app/node_modules /app/node_modules
1919COPY --from=build /app/dist /app/dist
20- ENV NODE_ENV production
20+ ENV NODE_ENV= " production"
2121CMD [ "pnpm" , "start" ]
Original file line number Diff line number Diff line change @@ -13,12 +13,6 @@ datasource db {
1313 url = env (" DATABASE_URL " )
1414}
1515
16- model Tags {
17- id String @id @default (auto () ) @map (" _id " ) @db.ObjectId
18- url String
19- lastRefresh DateTime @default (now () )
20- }
21-
2216model Ao3Feeds {
2317 id String @id @default (auto () ) @map (" _id " ) @db.ObjectId
2418 feedName String ?
@@ -34,7 +28,7 @@ model Ao3WorkSnapshot {
3428 index Int
3529 workId String
3630 chapters Int
37- lastUpdated DateTime
31+ lastUpdated String
3832 Ao3Feeds Ao3Feeds ? @relation (fields : [ao3FeedsId ] , references : [id ] )
3933 ao3FeedsId String ? @db.ObjectId
4034}
Original file line number Diff line number Diff line change 1+ import {
2+ CommandInteraction ,
3+ MessageFlags ,
4+ PermissionFlagsBits ,
5+ SlashCommandBuilder ,
6+ TextChannel ,
7+ } from 'discord.js' ;
8+ import emojis from '../constants/emojis' ;
9+
10+ export const data = new SlashCommandBuilder ( )
11+ . setName ( 'purge' )
12+ . setDescription ( 'Purges all messages from the current channel.' ) ;
13+
14+ export async function execute ( interaction : CommandInteraction ) {
15+ const channel = interaction . channel ;
16+ if ( ! channel || ! interaction . guild ) {
17+ return interaction . reply ( {
18+ content : `${ emojis . BOT . LEAF } This command can only be used in a text channel.` ,
19+ flags : MessageFlags . Ephemeral ,
20+ } ) ;
21+ }
22+
23+ const me = interaction . guild . members . me ;
24+
25+ if ( ! me ) {
26+ console . error ( 'Bot is not in the guild.' ) ;
27+ return ;
28+ }
29+
30+ if (
31+ ! ( interaction . channel as TextChannel )
32+ . permissionsFor ( me )
33+ . has ( PermissionFlagsBits . ManageMessages )
34+ ) {
35+ return interaction . reply ( {
36+ content : `${ emojis . BOT . LEAF } Missing \`Manage Messages\` permission.` ,
37+ flags : MessageFlags . Ephemeral ,
38+ } ) ;
39+ }
40+
41+ let messages ;
42+
43+ do {
44+ messages = await ( interaction . channel as TextChannel ) . bulkDelete (
45+ 100 ,
46+ true
47+ ) ;
48+ } while ( messages . size > 0 ) ;
49+
50+ return interaction . reply ( {
51+ content : `${ emojis . BOT . LEAF } \`Purged all messages from channel.\`` ,
52+ flags : MessageFlags . Ephemeral ,
53+ } ) ;
54+ }
Original file line number Diff line number Diff line change 11import { Client } from 'discord.js' ;
22import { config } from './config' ;
33import { commands } from './commands' ;
4- import { deployCommands } from './deploy-commands' ;
4+ import { deployCommands , deployGlobalCommands } from './utils /deploy-commands' ;
55import JobService from './services/JobService' ;
66import jobs from './jobs' ;
77
@@ -10,7 +10,10 @@ const client = new Client({
1010} ) ;
1111
1212client . once ( 'ready' , async ( ) => {
13- console . log ( 'Discord bot is ready! 🤖' ) ;
13+ console . log ( 'Ailurus has started!' ) ;
14+ console . log ( `Logged in as ${ client . user ?. tag } ` ) ;
15+
16+ await deployGlobalCommands ( ) ;
1417
1518 const jobService = new JobService ( client , jobs ) ;
1619 await jobService . start ( ) ;
Original file line number Diff line number Diff line change @@ -132,7 +132,7 @@ async function parseFeed(feed: { url: string }) {
132132 wordCount : parseInt ( wordCount . replace ( / , / g, '' ) ) ,
133133 chapters : parseInt ( chaptersWritten . replace ( / , / g, '' ) ) ,
134134 totalChapters : parseInt ( chapters . replace ( / , / g, '' ) ) ,
135- lastUpdated : new Date ( lastUpdated ) ,
135+ lastUpdated : lastUpdated ,
136136 } ;
137137
138138 return workData ;
@@ -202,10 +202,7 @@ export const checkFeeds: Job = {
202202 }
203203
204204 // Work exists in snapshots - check if updated by timestamp
205- if (
206- work . lastUpdated . getTime ( ) !==
207- previousSnapshot . lastUpdated . getTime ( )
208- ) {
205+ if ( work . lastUpdated !== previousSnapshot . lastUpdated ) {
209206 console . log ( `work date changed: ${ work . title } ` ) ;
210207
211208 updatedWorks . push ( work ) ;
Original file line number Diff line number Diff line change 1- import { tagRss } from './tag-rss' ;
21import { checkFeeds } from './check-feeds' ;
32
4- export default [ tagRss , checkFeeds ] ;
3+ export default [ checkFeeds ] ;
Load Diff This file was deleted.
Original file line number Diff line number Diff line change @@ -28,5 +28,5 @@ export type Work = {
2828 wordCount : Number ;
2929 chapters : Number ;
3030 totalChapters : Number ;
31- lastUpdated : Date ;
31+ lastUpdated : String ;
3232} ;
Original file line number Diff line number Diff line change 11import { REST , Routes } from 'discord.js' ;
2- import { config } from './config' ;
3- import { commands } from './commands' ;
2+ import { config } from '.. /config' ;
3+ import { commands } from '.. /commands' ;
44
55const commandsData = Object . values ( commands ) . map ( command => command . data ) ;
66
7- const rest = new REST ( { version : '10' } ) . setToken ( config . bot . token ) ;
7+ const rest = new REST ( ) . setToken ( config . bot . token ) ;
88
99type DeployCommandsProps = {
1010 guildId : string ;
@@ -26,3 +26,17 @@ export async function deployCommands({ guildId }: DeployCommandsProps) {
2626 console . error ( error ) ;
2727 }
2828}
29+
30+ export async function deployGlobalCommands ( ) {
31+ try {
32+ console . log ( 'Started refreshing application (/) commands.' ) ;
33+
34+ await rest . put ( Routes . applicationCommands ( config . bot . clientId ) , {
35+ body : commandsData ,
36+ } ) ;
37+
38+ console . log ( 'Successfully reloaded application (/) commands.' ) ;
39+ } catch ( error ) {
40+ console . error ( error ) ;
41+ }
42+ }
You can’t perform that action at this time.
0 commit comments