Patreon Wrapper 🍊
💎 Simple Patreon wrapper designed best for Discord Bots to process user's patreon subscription and lower down the Patreon API complexity...
🌄 You can also simulates sandbox of fake Patrons for development and code testing purposes
🍊 This package was previously used in AniTrack before switching to a real payment gateway
Table of Contents
Installing
Using NPM
$ npm install @anitrack/patreon-wrapper
Using YARN
$ yarn add @anitrack/patreon-wrapper
Usage Example
Importing
CommonJS
const { Patreon } = require('@anitrack/patreon-wrapper')
Typescript ES6
import { Patreon } from '@anitrack/patreon-wrapper'
Authorization
Where do I find Campaign ID? F12 your Patreon page and search for "campaign" then keep looking until you finds URL with campaign params that contains around 7 degits. That should be your Campaign ID
Patreon.Authorization({
AccessToken: 'YOUR_API_V2_ACCESS_TOKEN',
CampaignID: 'YOUR_CAPAIGN_ID',
})
Fetching every Patrons on the Campaign
Promies then catch
Patreon.FetchPatrons(['active_patron', 'declined_patron'])
.then((Patrons) => {
console.log(Patrons)
})
.catch((err) => {
console.log(err)
})
Async/Await
var Patrons = await Patreon.FetchPatrons(['active_patron', 'declined_patron'])
console.log(Patrons)
Clean Response Example
[
{
displayId: '12345678',
displayName: 'Username',
emailAddress: 'email@address.com',
isFollower: false,
subscription: {
note: '',
currentEntitled: {
status: 'active_patron',
tier: {
id: '12345678',
title: 'My First Tier'
},
cents: 500,
willPayCents: 500,
lifetimeCents: 1500,
firstCharge: '2022-01-15 15:00:00.000',
nextCharge: '2022-05-15 15:00:00.000',
lastCharge: '2022-05-15 15:00:00.000'
}
},
mediaConnection: {
patreon: {
id: '12345678',
url: 'https://www.patreon.com/api/oauth2/v2/user/12345678'
},
discord: {
id: '12345678',
url: 'https://discordapp.com/users/12345678'
}
}
},
{
...
},
{
...
}
]
Sandboxing
This is great for development and working with fake patrons users. The fake patrons object will be exactly the same as real ones!
Importing Sandbox
import { Patreon, Sandbox } from '@anitrack/patreon-wrapper'
Adding Fake Patrons to the Sandbox
You can repeat this as much as you want
Sandbox.AppendPatron({
displayId: '123',
displayName: '123',
emailAddress: 'email@address.com',
tier: { id: '123', title: 'Tier 1' },
cents: 500,
willPayCents: 500,
lifetimeCents: 1500,
firstCharge: '2022-01-15 15:00:00.000',
nextCharge: '2022-05-15 15:00:00.000',
lastCharge: '2022-04-15 15:00:00.000',
patronStatus: 'active_patron',
mediaConnection: {
patreon: {
id: '123',
url: 'https://www.patreon.com/api/oauth2/v2/user/user_id',
},
discord: { id: '123', url: 'https://discord.com/users/user_id' },
},
})
Viewing Fake Patrons Only
Sandbox.GetFakePatrons()
Viewing Fake Patrons + Real Patrons
Just fetch Patrons normally like you would with real ones
Patreon.FetchPatrons(['active_patron', 'declined_patron'])
.then((Patrons) => {
console.dir(Patrons, { depth: null })
})
.catch((err) => {
console.log(err)
})
License
MIT