Skip to content

Commit 7d5552b

Browse files
authored
fix: cleaning, add missing functions and fixup 2025 (#927)
1 parent bc8b114 commit 7d5552b

18 files changed

Lines changed: 123 additions & 57 deletions

config/default.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,8 @@
512512
// webhook queue is kept under control; if this clears nicely in between drops from your scanner you are keeping up. For outbound, a lower number of
513513
// concurrent senders will reduce chance of hitting the global rate limit (probably) which is why we haven't defaulted too high here
514514
//
515+
// fastMonsters - Eliminate SQL lookups for monster matching by activating in memory pokemon matching
516+
// disablePokemonCache - The impact of this will be that poracle uses a lot less memory
515517
// maxDatabaseConnections - This is the max number of database connections Poracle can have (per worker)
516518
// webhookProcessingWorkers - Number of threads to run inbound webhook workers. Five is enough for very big systems, going too high is probably
517519
// counter productive so talk to me before playing with this one
@@ -524,7 +526,8 @@
524526
// concurrentDiscordWebhookConnections - How many concurrent discord webhook destinations to send to at once
525527
//
526528
"tuning": {
527-
"fastMonsters": false,
529+
"fastMonsters": true,
530+
"disablePokemonCache": true,
528531
"maxDatabaseConnections": 15,
529532
"webhookProcessingWorkers": 5,
530533
"concurrentWebhookProcessorsPerWorker": 4,

locale/de.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"channel":"Kanal",
4747
"Charged TM":"Lade-TM",
4848
"Chill":"Gefriermodul",
49-
"clean":"aufräumen",
49+
"clean":"bereinigen",
5050
"Cleaning finished":"Säuberung beendet!",
5151
"clear":"leeren",
5252
"Cliff":"Cliff",
@@ -299,6 +299,7 @@
299299
"settime":"Zeit",
300300
"Shadow":"Crypto",
301301
"Shadow Legendary":"Crypto Legendär",
302+
"Shiny":"schillernd",
302303
"Shiny information not yet calculated - wait a few minutes and try again":"Shinyinfos noch nicht berechnet - warte ein paar Minuten und versuche es erneut",
303304
"Shiny Rate":"Shinyrate",
304305
"Shiny Stats (Last few hours)":"Shiny Statistik (der letzen Stunden)",
@@ -421,6 +422,14 @@
421422
"You can start receiving alerts again using {0}{1}":"Du kannst mit {0}{1} wieder Benachrichtigungen erhalten",
422423
"You do not have any profiles":"Kein Profil vorhanden",
423424
"You do not have permission to execute this command":"keine Berechtigung dieses Komando zu benutzen",
425+
"You do not have permission to track monsters":"keine Berechtigung Pokémon zu tracken",
426+
"You do not have permission to track raids":"keine Berechtigung Raids zu tracken",
427+
"You do not have permission to track quests":"keine Berechtigung Quests zu tracken",
428+
"You do not have permission to track invasions":"keine Berechtigung Team-GO-Rocket-Invasionen zu tracken",
429+
"You do not have permission to track lures":"keine Berechtigung Lockmodule zu tracken",
430+
"You do not have permission to track nests":"keine Berechtigung Nester zu tracken",
431+
"You do not have permission to track gyms":"keine Berechtigung Arenen zu tracken",
432+
"You do not have permission to track fort changes":"keine Berechtigung Gym und Stop Änderungen zu tracken",
424433
"You don't have a profile set":"Kein Profil gewählt",
425434
"You have been granted the role {0}":"Folgende Rolle wurde hinzugefügt: {0}",
426435
"You have breached the rate limit too many times in the last 24 hours. Your messages are now stopped, use {0}start to resume":"24 Std. Nachrichtenlimit wurde überschritten. Benachrichtigungen sind nun deaktiviert, nutze {0}start um diese wieder zu aktivieren",
@@ -443,12 +452,14 @@
443452
"You're not tracking any nests":"Es werden keine Nester beobachtet.",
444453
"You're not tracking any quests":"Es werden keine Quests beobachtet.",
445454
"You're not tracking any raids":"Es werden keine Raids beobachtet.",
455+
"You're not tracking any fort changes":"Es werden keine Gym und Stop Änderungen beobachtet.",
446456
"You're tracking the following gyms:":"Folgende Arenen werden beobachtet:",
447457
"You're tracking the following invasions:":"Folgende Team-GO-Rocket-Invasionen werden beobachtet:",
448458
"You're tracking the following lures:":"Folgende Lockmodule werden beobachtet:",
449459
"You're tracking the following monsters:":"Folgende Pokémon werden beobachtet:",
450460
"You're tracking the following nests:":"Folgende Nester werden beobachtet:",
451461
"You're tracking the following quests:":"Folgende Quests werden beobachtet:",
452462
"You're tracking the following raids:":"Folgende Raids werden beobachtet:",
463+
"You're tracking the following fort changes:":"Folgende Gym und Stop Änderungen werden beobachtet:",
453464
"Zen":"Trance-Modus"
454465
}

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "poracle",
3-
"version": "4.8.3",
3+
"version": "4.8.4",
44
"description": "Webhook processing and personalised discord|telegram alarms",
55
"keywords": [
66
"poracle",
@@ -42,7 +42,7 @@
4242
"discord.js": "^13.16.0",
4343
"fast-json-stable-stringify": "^2.1.0",
4444
"fastify": "^4.25.2",
45-
"flat-cache": "^4.0.0",
45+
"flat-cache": "^5.0.0",
4646
"form-data": "^4.0.0",
4747
"geo-tz": "^8.0.0",
4848
"handlebars": "^4.7.7",

src/lib/discord/commando/events/channelDelete.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,12 @@ module.exports = async (client, channel) => {
66
await client.query.deleteQuery('monsters', { id: channel.id })
77
await client.query.deleteQuery('raid', { id: channel.id })
88
await client.query.deleteQuery('quest', { id: channel.id })
9+
await client.query.deleteQuery('lures', { id: channel.id })
10+
await client.query.deleteQuery('gym', { id: channel.id })
11+
await client.query.deleteQuery('invasion', { id: channel.id })
12+
await client.query.deleteQuery('nests', { id: channel.id })
13+
await client.query.deleteQuery('forts', { id: channel.id })
14+
await client.query.deleteQuery('weather', { id: channel.id })
915
await client.query.deleteQuery('humans', { id: channel.id })
1016
client.logs.discord.log({
1117
level: 'debug',
@@ -16,4 +22,4 @@ module.exports = async (client, channel) => {
1622
} catch (e) {
1723
client.logs.discord.error('Discord event channelDelete - Was unable to remove human', e)
1824
}
19-
}
25+
}

src/lib/discord/discordReconciliation.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ class DiscordReconciliation {
131131
await this.query.deleteQuery('raid', { id: user.id })
132132
await this.query.deleteQuery('quest', { id: user.id })
133133
await this.query.deleteQuery('lures', { id: user.id })
134+
await this.query.deleteQuery('gym', { id: user.id })
135+
await this.query.deleteQuery('invasion', { id: user.id })
136+
await this.query.deleteQuery('nests', { id: user.id })
137+
await this.query.deleteQuery('forts', { id: user.id })
138+
await this.query.deleteQuery('weather', { id: user.id })
134139
await this.query.deleteQuery('profiles', { id: user.id })
135140
await this.query.deleteQuery('humans', { id: user.id })
136141
this.log.info(`Reconciliation (Discord) Delete user ${user.id} ${user.name}`)

src/lib/poracleMessage/commands/backup.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ exports.run = async (client, msg, args, options) => {
3939
weather: await client.query.selectAllQuery('weather', { id: target.id, profile_no: currentProfileNo }),
4040
lures: await client.query.selectAllQuery('lures', { id: target.id, profile_no: currentProfileNo }),
4141
gym: await client.query.selectAllQuery('gym', { id: target.id, profile_no: currentProfileNo }),
42+
forts: await client.query.selectAllQuery('forts', { id: target.id, profile_no: currentProfileNo }),
4243
nests: await client.query.selectAllQuery('nests', { id: target.id, profile_no: currentProfileNo }),
4344
}
4445
backup.monsters.map((x) => { x.id = 0; delete x.uid; x.profile_no = 0 })
@@ -49,6 +50,7 @@ exports.run = async (client, msg, args, options) => {
4950
backup.weather.map((x) => { x.id = 0; delete x.uid; x.profile_no = 0 })
5051
backup.lures.map((x) => { x.id = 0; delete x.uid; x.profile_no = 0 })
5152
backup.gym.map((x) => { x.id = 0; delete x.uid; x.profile_no = 0 })
53+
backup.forts.map((x) => { x.id = 0; delete x.uid; x.profile_no = 0 })
5254
backup.nests.map((x) => { x.id = 0; delete x.uid; x.profile_no = 0 })
5355

5456
fs.writeFileSync(path.join(__dirname, '../../../../backups', `${args[0]}.json`), JSON.stringify(backup, null, '\t'))

src/lib/poracleMessage/commands/profile.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,11 @@ exports.run = async (client, msg, args, options) => {
116116
await client.query.deleteQuery('raid', { id: target.id, profile_no: profileNo })
117117
await client.query.deleteQuery('quest', { id: target.id, profile_no: profileNo })
118118
await client.query.deleteQuery('lures', { id: target.id, profile_no: profileNo })
119+
await client.query.deleteQuery('forts', { id: target.id, profile_no: profileNo })
120+
await client.query.deleteQuery('gym', { id: target.id, profile_no: profileNo })
121+
await client.query.deleteQuery('invasion', { id: target.id, profile_no: profileNo })
122+
await client.query.deleteQuery('nests', { id: target.id, profile_no: profileNo })
123+
await client.query.deleteQuery('weather', { id: target.id, profile_no: profileNo })
119124
}
120125

121126
if (human.current_profile_no === profileNo) {
@@ -236,7 +241,7 @@ exports.run = async (client, msg, args, options) => {
236241
}
237242
case 'copyto': {
238243
const currentName = profiles.find((profile) => profile.profile_no === currentProfileNo).name
239-
const categories = ['monsters', 'raid', 'egg', 'quest', 'invasion', 'weather', 'lures', 'gym', 'nests']
244+
const categories = ['monsters', 'raid', 'egg', 'quest', 'invasion', 'weather', 'lures', 'gym', 'nests', 'forts']
240245
const valid = []
241246
const invalid = []
242247

src/lib/poracleMessage/commands/script.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ exports.run = async (client, msg, args, options) => {
2828

2929
if (!args.length) {
3030
await msg.reply(
31-
translator.translateFormat('Valid commands are e.g. `{0}script everything`, `{0}script pokemon raids eggs quest lures invasion nests gym`, `{0}script everything allprofiles`, `{0}script everything link`', util.prefix),
31+
translator.translateFormat('Valid commands are e.g. `{0}script everything`, `{0}script pokemon raids eggs quest lures invasion nests gym forts`, `{0}script everything allprofiles`, `{0}script everything link`', util.prefix),
3232
{ style: 'markdown' },
3333
)
3434
return
@@ -60,6 +60,7 @@ exports.run = async (client, msg, args, options) => {
6060
const lures = await client.query.selectAllQuery('lures', { id: target.id, profile_no: currentProfileNo })
6161
const nests = await client.query.selectAllQuery('nests', { id: target.id, profile_no: currentProfileNo })
6262
const gyms = await client.query.selectAllQuery('gym', { id: target.id, profile_no: currentProfileNo })
63+
const forts = await client.query.selectAllQuery('forts', { id: target.id, profile_no: currentProfileNo })
6364

6465
const gender = ['', 'male', 'female', 'genderless']
6566

@@ -136,6 +137,8 @@ exports.run = async (client, msg, args, options) => {
136137
}
137138
if (raid.team !== 4) message += ` team:${raidTeams[raid.team]}`
138139
if (raid.exclusive) message += ' ex'
140+
if (raid.rsvp_changes == 1) message += ' rsvp'
141+
if (raid.rsvp_changes == 2) message += ' rsvp_only'
139142
if (raid.clean) message += ' clean'
140143

141144
message += '\n'
@@ -157,6 +160,8 @@ exports.run = async (client, msg, args, options) => {
157160
}
158161
if (egg.team !== 4) message += ` team:${raidTeams[egg.team]}`
159162
if (egg.exclusive) message += ' ex'
163+
if (egg.rsvp_changes == 1) message += ' rsvp'
164+
if (egg.rsvp_changes == 2) message += ' rsvp_only'
160165
if (egg.clean) message += ' clean'
161166

162167
message += '\n'
@@ -254,6 +259,23 @@ exports.run = async (client, msg, args, options) => {
254259
}
255260
}
256261

262+
if (everything || args.includes('forts')) {
263+
const fortParameters = {
264+
template: ['template', client.config.general.defaultTemplateName.toString()],
265+
d: ['distance', 0],
266+
}
267+
for (const fort of forts) {
268+
message += `${prefix}fort ${fort.fort_type}`
269+
270+
if (fort.include_empty) message += ' include_empty'
271+
for (const [param, [dbFieldName, defaultValue]] of Object.entries(fortParameters)) {
272+
if (fort[dbFieldName] !== defaultValue) message += ` ${param}:${fort[dbFieldName]}`
273+
}
274+
275+
message += '\n'
276+
}
277+
}
278+
257279
if (everything || args.includes('lures')) {
258280
const lureParameters = {
259281
template: ['template', client.config.general.defaultTemplateName.toString()],

src/lib/poracleMessage/commands/unregister.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,17 @@ exports.run = async (client, msg, args, options) => {
3131
await client.query.deleteQuery('monsters', { id: t })
3232
await client.query.deleteQuery('raid', { id: t })
3333
await client.query.deleteQuery('quest', { id: t })
34+
await client.query.deleteQuery('lures', { id: t })
35+
await client.query.deleteQuery('forts', { id: t })
36+
await client.query.deleteQuery('gym', { id: t })
37+
await client.query.deleteQuery('invasion', { id: t })
38+
await client.query.deleteQuery('nests', { id: t })
39+
await client.query.deleteQuery('weather', { id: t })
3440
await client.query.deleteQuery('humans', { id: t })
41+
await client.query.deleteQuery('profiles', { id: t })
3542
client.log.info(`${msg.userId} unregistered ${t}`)
3643
} catch (err) {
3744
client.log.error('Unregister command failed with: ', err)
3845
}
3946
}
40-
}
47+
}

src/lib/telegram/telegramReconciliation.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ class TelegramReconciliation {
6565
await this.query.deleteQuery('raid', { id: user.id })
6666
await this.query.deleteQuery('quest', { id: user.id })
6767
await this.query.deleteQuery('lures', { id: user.id })
68+
await this.query.deleteQuery('gym', { id: user.id })
69+
await this.query.deleteQuery('invasion', { id: user.id })
70+
await this.query.deleteQuery('nests', { id: user.id })
71+
await this.query.deleteQuery('forts', { id: user.id })
72+
await this.query.deleteQuery('weather', { id: user.id })
6873
await this.query.deleteQuery('profiles', { id: user.id })
6974
await this.query.deleteQuery('humans', { id: user.id })
7075
this.log.info(`Reconciliation (Telegram) Delete user ${user.id} ${user.name}`)

0 commit comments

Comments
 (0)