Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bitovi/discord-spike
Spike to see if its possible and to load comments from our discord server for blogs and documenting said process.
https://github.com/bitovi/discord-spike
Last synced: about 8 hours ago
JSON representation
Spike to see if its possible and to load comments from our discord server for blogs and documenting said process.
- Host: GitHub
- URL: https://github.com/bitovi/discord-spike
- Owner: bitovi
- Created: 2023-07-05T16:16:33.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-07-05T19:17:44.000Z (over 1 year ago)
- Last Synced: 2024-04-14T22:37:31.427Z (7 months ago)
- Language: TypeScript
- Size: 51.8 KB
- Stars: 0
- Watchers: 9
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **DISCORD SPIKE**
Spike for [WEBUP-920](https://bitovi.atlassian.net/browse/WEBUP-920).
## Project Info
#### Getting Started:
For setting up the project, create a `.env` file using our `.env.example` and place your relevant discord keys, `npm install` then using the scrips below for starting up the application.- `npm run dev` to start front end.
- `npm run start:server` to start backend application.#### Folder Structure:
```text
|- Backend
|- app.js : Small proxy server connecting to discord message end point.
|- Frontend.
|- app.tsx
|- env.example : environment file containing discord API keys/tokens.
```## NOTES/FINDINGS:
[Get Message Endpoint](https://discord.com/developers/docs/resources/channel#get-channel-messages): /channels/[channel.id](https://discord.com/developers/docs/resources/channel#channel-object)/messages
For making this we need a Bot Token Authorization Header as this endpoint does not use OAuth2.0 like other discord endpoint.
eg: `Authorization: Bot MTk4NjIyNDgzNDcxOTI1MjQ4.Cl2FMQ.ZnCjm1XVW7vRze4b7Cq4se7kKWs`. To get a bot token you first have to create a Bot, this can be done on the [Discord Developer Portal](https://discord.com/developers/applications?new_application=true).
**NOTE**: The bot needs access to whatever channel/thread it will be viewing, so give access only to channels it would be viewing.
Below is and example of a request to the get message endpoint and the data returned:
#### Get Messages Fetch request.
```js
var myHeaders = new Headers();
myHeaders.append("Authorization", "Bot ");var requestOptions = {
method: 'GET',
headers: myHeaders,
redirect: 'follow'
};fetch("https://discord.com/api/v10/channels/{channel_id||thread_id}/messages", requestOptions)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log('error', error));```
#### Message Data.
```json[
{
"id": "1122868555264839682",
"type": 0,
"content": "``` \nyess\n```",
"channel_id": "1122868445231452241",
"author": {
"id": "355913069156761601",
"username": "nevikk",
"global_name": "Nevikk",
"avatar": "6303bf358c1a22c8e858cdc959c3eaed",
"discriminator": "0",
"public_flags": 0,
"avatar_decoration": null
},
"attachments": [],
"embeds": [],
"mentions": [],
"mention_roles": [],
"pinned": false,
"mention_everyone": false,
"tts": false,
"timestamp": "2023-06-26T12:38:45.464000+00:00",
"edited_timestamp": null,
"flags": 0,
"components": [],
"position": 1
}
]```
By default, the request returns 50 elements, to this can be adjusted through the `limit` [query param](https://discord.com/developers/applications?new_application=true). The query params can also be used for pagination via the before, after and around fields which takes the message_id.
#### Rate Limiting.
Lastly for rate limit considerations, our Blogs are getting on average 1000 views a day, which would equate to ~1 view per second taking this into consideration with the [Global Rate Limits](https://discord.com/developers/docs/topics/rate-limits#global-rate-limit) for discord API, 50 request per route, we would not need any caching initially as we are far from the rate limits.