initial commit
This commit is contained in:
		
							
								
								
									
										33
									
								
								lib/api.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								lib/api.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,33 @@ | ||||
| // API reference: https://api.pleroma.social/ and https://docs-develop.pleroma.social/backend/development/API/pleroma_api/ | ||||
|  | ||||
| 'use strict'; | ||||
| import fetch from 'node-fetch'; | ||||
|  | ||||
| export const getLatestStatuses = async (count) =>{ | ||||
|   const headers = {Authorization: `Bearer ${process.env.ADMIN_BEARER}`}; | ||||
|   const statusUrlArr = []; | ||||
|   if (!count){ | ||||
|     count = 1; | ||||
|   } | ||||
|   try{ | ||||
|       const res = await fetch(`https://${process.env.INSTANCE_NAME}/api/v1/pleroma/admin/statuses?page_size=${count}&godmode=false&local_only=false`, { | ||||
|           method: "GET", | ||||
|           headers: headers, | ||||
|       }); | ||||
|       const data = await res.json(); | ||||
|        | ||||
|       for (let account in data){ | ||||
|         statusUrlArr.push([ | ||||
|             data[account].id,  | ||||
|             data[account].account.username, | ||||
|             data[account].pleroma.conversation_id, | ||||
|             data[account].mentions, | ||||
|           ]); | ||||
|         }; | ||||
|  | ||||
|   } catch (error){ | ||||
|       throw new Error(error); | ||||
|   }; | ||||
|  //console.log(statusUrlArr); | ||||
|  return statusUrlArr; | ||||
| }; | ||||
							
								
								
									
										49
									
								
								lib/replybot.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								lib/replybot.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,49 @@ | ||||
| 'use strict'; | ||||
|  | ||||
| import fetch from 'node-fetch'; | ||||
| import { getLatestStatuses } from './api.js'; | ||||
|  | ||||
| const chooseStatusID = (array) => { | ||||
|     return array[Math.floor(Math.random() * array.length)]; | ||||
| }; | ||||
|  | ||||
| const emoteChoice = async () =>{ // pulls current emojis from the instance | ||||
|     const res = await fetch(`https://${process.env.INSTANCE_NAME}/api/v1/pleroma/emoji`, { | ||||
|         method: "GET", | ||||
|     }); | ||||
|     const data = await res.json(); | ||||
|     let emoteArray = []; | ||||
|     for (let e in data){ | ||||
|         emoteArray.push(e);     | ||||
|     } | ||||
|     return emoteArray[Math.floor(Math.random() * emoteArray.length)]; | ||||
| }; | ||||
|  | ||||
| const replyChoice = async () =>{ | ||||
|     const replyArr = [ // add desired replies here - it's just a big ass array | ||||
|         "example1", | ||||
|         "example 2", | ||||
|         "EXAMPLE 3", | ||||
|     ]; | ||||
|     return replyArr[Math.floor(Math.random() * replyArr.length)]; | ||||
| }; | ||||
|  | ||||
| export const postReply = async () =>{ | ||||
|     const headers = {Authorization: `Bearer ${process.env.REPLYBOT_BEARER}`, "Content-Type": "application/json"}; | ||||
|     const mentions = []; | ||||
|     const statusIDArr = await getLatestStatuses(20); | ||||
|     const target = chooseStatusID(statusIDArr); | ||||
|     if (target[3]) { | ||||
|         for (let i = 0; i < target[3].length; i++){ | ||||
|             mentions.push(target[3][i].acct); | ||||
|         } | ||||
|     }; | ||||
|     const emoji = await emoteChoice(); | ||||
|     const word = await replyChoice(); | ||||
|     const res = await fetch(`https://${process.env.INSTANCE_NAME}/api/v1/statuses`, { | ||||
|       method: "POST", | ||||
|       headers: headers, | ||||
|       body: JSON.stringify({status: `${word} :${emoji}:`, in_reply_to_id: target[0], to: mentions}), | ||||
|     }); | ||||
|     if (res.status === 200) {console.log('Replybot posted!')} else {console.log('Replybot failed:', res.status, res.statusText, res.url, word, emoji)} | ||||
|   }; | ||||
		Reference in New Issue
	
	Block a user