45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
const zulip = require("zulip-js");
 | 
						|
 | 
						|
export async function deleteMessagesZulip(streamName, topicName, numOfDay) {
 | 
						|
  const config = {
 | 
						|
    zuliprc: "./download",
 | 
						|
    zulipVersion: "v2",
 | 
						|
  };
 | 
						|
  const client = await zulip(config);
 | 
						|
  try {
 | 
						|
    const messages = await client.messages.retrieve({
 | 
						|
      anchor: "oldest",
 | 
						|
      num_before: 0,
 | 
						|
      num_after: 5000,
 | 
						|
      narrow: [
 | 
						|
        { operator: "stream", operand: streamName },
 | 
						|
        { operator: "topic", operand: topicName },
 | 
						|
      ],
 | 
						|
    });
 | 
						|
    // console.log(messages.messages.map(u=>u.reactions))
 | 
						|
    const members = await client.users.retrieve();
 | 
						|
 | 
						|
    // console.log(members.members)
 | 
						|
    for (const message of messages.messages) {
 | 
						|
      if (
 | 
						|
        message.reactions.filter(
 | 
						|
          (i) =>
 | 
						|
            i.emoji_name === "working_on_it" &&
 | 
						|
            members.members.filter((u) => u.user_id === i.user_id)[0]
 | 
						|
              .is_admin === true
 | 
						|
        ).length === 0 &&
 | 
						|
        message.timestamp <
 | 
						|
          Math.floor((Date.now() - 60000 * 60 * 24 * numOfDay) / 1000)
 | 
						|
      ) {
 | 
						|
        const res = await client.messages.deleteById({
 | 
						|
          message_id: message.id,
 | 
						|
        });
 | 
						|
        console.log(`Deleted message ID ${message.id}`);
 | 
						|
        // console.log(res)
 | 
						|
      }
 | 
						|
    }
 | 
						|
  } catch (error) {
 | 
						|
    console.error("Error:", error);
 | 
						|
  }
 | 
						|
}
 |