Clear User Channel History Command (#88)
* Add: Clear user channel message history command * Update: Checks if messages are empty and has clearer replies * Fix: Issue where duplication happens on channel-toggle true in threads * Update: version increment * Fix: Missing test case for commands.test.ts * Readability fix --------- Co-authored-by: Jonathan Smoley <67881240+JT2M0L3Y@users.noreply.github.com>
This commit is contained in:
@@ -58,6 +58,61 @@ export async function getThread(filename: string, callback: (config: Thread | un
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to check if a thread history file exists
|
||||
*
|
||||
* @param channel parent thread of the requested thread (can be GuildText)
|
||||
* @returns true if channel does not exist, false otherwise
|
||||
*/
|
||||
async function checkChannelInfoExists(channel: TextChannel, user: string) {
|
||||
// thread exist handler
|
||||
const isThread: boolean = await new Promise((resolve) => {
|
||||
getThread(`${channel.id}-${user}.json`, (channelInfo) => {
|
||||
if (channelInfo?.messages)
|
||||
resolve(true)
|
||||
else
|
||||
resolve(false)
|
||||
})
|
||||
})
|
||||
return isThread
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to clear channel history for requesting user
|
||||
*
|
||||
* @param filename guild id string
|
||||
* @param channel the TextChannel in the Guild
|
||||
* @param user username of user
|
||||
* @returns nothing
|
||||
*/
|
||||
export async function clearChannelInfo(filename: string, channel: TextChannel, user: string): Promise<boolean> {
|
||||
const channelInfoExists: boolean = await checkChannelInfoExists(channel, user)
|
||||
|
||||
// If thread does not exist, file can't be found
|
||||
if (!channelInfoExists) return false
|
||||
|
||||
// Attempt to clear user channel history
|
||||
const fullFileName = `data/${filename}-${user}.json`
|
||||
const cleanedHistory: boolean = await new Promise((resolve) => {
|
||||
fs.readFile(fullFileName, 'utf8', (error, data) => {
|
||||
if (error)
|
||||
console.log(`[Error: openChannelInfo] Incorrect file format`)
|
||||
else {
|
||||
const object = JSON.parse(data)
|
||||
if (object['messages'].length === 0) // already empty, let user know
|
||||
resolve(false)
|
||||
else {
|
||||
object['messages'] = [] // cleared history
|
||||
fs.writeFileSync(fullFileName, JSON.stringify(object, null, 2))
|
||||
resolve(true)
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
console.log(cleanedHistory)
|
||||
return cleanedHistory
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to open the channel history
|
||||
*
|
||||
@@ -67,7 +122,6 @@ export async function getThread(filename: string, callback: (config: Thread | un
|
||||
* @param messages their messages
|
||||
*/
|
||||
export async function openChannelInfo(filename: string, channel: TextChannel, user: string, messages: UserMessage[] = []): Promise<void> {
|
||||
// thread exist handler
|
||||
const isThread: boolean = await new Promise((resolve) => {
|
||||
getThread(`${channel.id}.json`, (threadInfo) => {
|
||||
if (threadInfo?.messages)
|
||||
@@ -77,7 +131,7 @@ export async function openChannelInfo(filename: string, channel: TextChannel, us
|
||||
})
|
||||
})
|
||||
|
||||
// This is an existing thread, don't create another json
|
||||
// this is a thread channel, do not duplicate files
|
||||
if (isThread) return
|
||||
|
||||
const fullFileName = `data/${filename}-${user}.json`
|
||||
|
||||
Reference in New Issue
Block a user