thoroughly testing notifications and timing
parent
35956bb7b1
commit
1603c7bf07
|
@ -133,7 +133,7 @@ export class DatabaseService {
|
|||
const { access_token, token_type, expires_in, scope } = tokenData;
|
||||
const expiryTimestamp = Math.floor(Date.now() / 1000) + expires_in;
|
||||
console.log('token_identifier', token_identifier)
|
||||
console.log('access_token', access_token)
|
||||
console.log('access_token', `${access_token.substring(0, 5)}XXXXX`)
|
||||
console.log('token_type', token_type)
|
||||
console.log('expires_in', expires_in)
|
||||
console.log('scope', scope)
|
||||
|
@ -170,7 +170,7 @@ export class DatabaseService {
|
|||
* @returns {Promise<boolean>} True if the cooldown has passed, allowing new notifications to be sent.
|
||||
*/
|
||||
public async canSendNotification(): Promise<boolean> {
|
||||
const cooldownHours = parseInt(process.env.NOTIFICATION_COOLDOWN_HOURS || '4', 10);
|
||||
const cooldownHours = process.env.NOTIFICATION_COOLDOWN_HOURS || 4;
|
||||
const sql = `
|
||||
SELECT MAX(sent_time) as last_notification_time
|
||||
FROM user_mentions
|
||||
|
@ -183,9 +183,11 @@ export class DatabaseService {
|
|||
}
|
||||
|
||||
const lastNotificationTime = new Date(result.last_notification_time).getTime();
|
||||
const currentTime = Date.now();
|
||||
const currentTime = new Date(new Date().toISOString().slice(0, 19).replace('T', ' ')).getTime();
|
||||
const timeElapsed = currentTime - lastNotificationTime;
|
||||
const cooldownPeriod = cooldownHours * 60 * 60 * 1000; // Convert hours to milliseconds
|
||||
console.log('timeElapsed', timeElapsed)
|
||||
const cooldownPeriod = +cooldownHours * 60 * 60 * 1000; // Convert hours to milliseconds
|
||||
console.log('cooldownPeriod', cooldownPeriod)
|
||||
|
||||
return timeElapsed >= cooldownPeriod;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@ async function startApplication() {
|
|||
const coolDownHours = process.env.NOTIFICATION_COOLDOWN_HOURS
|
||||
if (!canSend) {
|
||||
console.log(`Last Message Sent less than ${coolDownHours ? coolDownHours : 4} hours ago. Set NOTIFICATION_COOLDOWN_HOURS to change this`)
|
||||
return;
|
||||
}
|
||||
|
||||
console.log('RDrama Session Start')
|
||||
|
|
|
@ -10,20 +10,20 @@ export class CommentParser {
|
|||
*/
|
||||
public extractUsernames(comment: Comment): string[] {
|
||||
const foundUsernames: Set<string> = new Set();
|
||||
|
||||
|
||||
const matches = comment.body.match(this.regexPattern);
|
||||
if (matches) {
|
||||
matches.forEach(match => {
|
||||
// Ensure the username is captured in a standardized format
|
||||
const usernameMatch = match.trim().match(/\/?u\/([a-zA-Z0-9_]+)/);
|
||||
if (usernameMatch) {
|
||||
// Standardize to "u/username" format
|
||||
const username = `u/${usernameMatch[1].toLowerCase()}`;
|
||||
// Standardize to "username" format
|
||||
const username = `${usernameMatch[1].toLowerCase()}`;
|
||||
foundUsernames.add(username);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
return Array.from(foundUsernames);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import axios, { AxiosError } from 'axios';
|
||||
import SessionManager from '../session/SessionManager';
|
||||
import { RedditUser } from '../model/user';
|
||||
import { RedditUser } from '../model/User';
|
||||
|
||||
export class RedditService {
|
||||
private sessionManager: SessionManager;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import dotenv from 'dotenv';
|
||||
import { RedditService } from '../reddit/services/reddit';
|
||||
import { RedditService } from '../reddit/services/Reddit';
|
||||
import { DatabaseService } from '../db/services/Database';
|
||||
|
||||
// Load environment variables from .env file
|
||||
|
|
|
@ -3,7 +3,7 @@ import { CommentParser } from "../rdrama/services/CommentParser";
|
|||
import { CommentPoster } from "../rdrama/services/CommentPoster";
|
||||
import { MessageService } from "../utils/MessageService";
|
||||
import { DatabaseService } from "../db/services/Database";
|
||||
import { RedditService } from "../reddit/services/reddit";
|
||||
import { RedditService } from "../reddit/services/Reddit";
|
||||
import RedditSessionManager from "../reddit/session/SessionManager";
|
||||
import { shouldNotifyUser } from "../utils/ShouldNotify";
|
||||
|
||||
|
@ -50,6 +50,8 @@ class WorkflowOrchestrator {
|
|||
if (!resultshouldNotifyUser) continue
|
||||
const placeholdersReddit = {
|
||||
author_name: comment.author_name,
|
||||
username: redditUser,
|
||||
permalink: comment.permalink
|
||||
};
|
||||
const redditMessage = this.messageService.getRandomRedditMessage(placeholdersReddit)
|
||||
await this.databaseService.insertUserMention({
|
||||
|
|
Loading…
Reference in New Issue