diff --git a/docs/general/services.md b/docs/general/services.md index 3c69882f..b7048e58 100644 --- a/docs/general/services.md +++ b/docs/general/services.md @@ -1,4 +1,4 @@ -# Supported Services (26) +# Supported Services (27)

@@ -269,6 +269,20 @@ Class: [MotionBotList](/#/docs/main/$$$ref/class/MotionBotList) Website: https://www.motiondevelopment.top/bot

+
+

+ radar logo +

+ + + +

Radar Bot Directory

+ +Keys: `radar`, `radarbots`, `radarbotdirectory.xyz` +Class: [RadarBotList](/#/docs/main/$$$ref/class/RadarBotList) +Website: https://radarbotdirectory.xyz +
+

spacebotslist logo diff --git a/src/Interface/ListIndex.ts b/src/Interface/ListIndex.ts index 3da6449f..8cdd606f 100644 --- a/src/Interface/ListIndex.ts +++ b/src/Interface/ListIndex.ts @@ -13,15 +13,16 @@ import DiscordBotlistEU from './Lists/DiscordBotlistEU' import DiscordBotsGG from './Lists/DiscordBotsGG' import DiscordExtremeList from './Lists/DiscordExtremeList' import DiscordLabs from './Lists/DiscordLabs' -import DiscordListology from './Lists/DiscordListology' import DiscordListSpace from './Lists/DiscordListSpace' -import DiscordsCom from './Lists/DiscordsCom' +import DiscordListology from './Lists/DiscordListology' import DiscordServices from './Lists/DiscordServices' +import DiscordsCom from './Lists/DiscordsCom' import Disforge from './Lists/Disforge' import FatesList from './Lists/FatesList' import InfinityBotList from './Lists/InfinityBotList' import Listcord from './Lists/Listcord' import MotionBotList from './Lists/MotionBotList' +import RadarBotList from './Lists/RadarBotList' import SpaceBotsList from './Lists/SpaceBotsList' import TopCord from './Lists/TopCord' import TopGG from './Lists/TopGG' @@ -56,18 +57,18 @@ export const serviceList = { 'discordextremelist.xyz': DiscordExtremeList, 'discordlabs': DiscordLabs, 'discordlabs.org': DiscordLabs, - 'discordlistology': DiscordListology, - 'discordlistology.com': DiscordListology, 'discordlistspace': DiscordListSpace, 'discordlist.space': DiscordListSpace, 'botlistspace': DiscordListSpace, 'botlist.space': DiscordListSpace, + 'discordlistology': DiscordListology, + 'discordlistology.com': DiscordListology, + 'discordservices': DiscordServices, + 'discordservices.net': DiscordServices, 'botsfordiscord': DiscordsCom, 'botsfordiscord.com': DiscordsCom, 'discords': DiscordsCom, 'discords.com': DiscordsCom, - 'discordservices': DiscordServices, - 'discordservices.net': DiscordServices, 'disforge': Disforge, 'disforge.com': Disforge, 'fateslist': FatesList, @@ -80,6 +81,9 @@ export const serviceList = { 'motiondevelopment': MotionBotList, 'motionbotlist': MotionBotList, 'motiondevelopment.top': MotionBotList, + 'radar': RadarBotList, + 'radarbots': RadarBotList, + 'radarbotdirectory.xyz': RadarBotList, 'spacebotslist': SpaceBotsList, 'space-bot-list.xyz': SpaceBotsList, 'topcord': TopCord, diff --git a/src/Interface/Lists/RadarBotList.ts b/src/Interface/Lists/RadarBotList.ts new file mode 100644 index 00000000..3d817525 --- /dev/null +++ b/src/Interface/Lists/RadarBotList.ts @@ -0,0 +1,77 @@ +import { Service, ServicePostOptions } from '../Service' +import { Util, IDResolvable } from '../../Utils/Util' + +/** + * Represents the Radar Bot Directory service. + * @see https://docs.radarbotdirectory.xyz/ + */ +export default class RadarBotDirectory extends Service { + /** The values that can be used to select the service. */ + static get aliases() { + return ['radar', 'radarbots', 'radarbotdirectory.xyz'] + } + + /** The logo URL. */ + static get logoURL() { + return 'https://theoverlook.xyz/Images/RBD/botlistlogo.png' + } + + /** Service's name. */ + static get serviceName() { + return 'Radar Bot Directory' + } + + /** The website URL. */ + static get websiteURL() { + return 'https://radarbotdirectory.xyz' + } + + /** The base URL of the service's API. */ + static get baseURL() { + return 'https://radarbotdirectory.xyz/api' + } + + /** + * Posts statistics to this service. + * @param options The options of the request + */ + static post(options: ServicePostOptions) { + const { token, clientID, serverCount, shard } = options + return super._post({ + method: 'patch', + url: `/bot/${Util.resolveID(clientID)}/stats/`, + headers: { Authorization: token }, + data: shard + ? { + guilds: Util.resolveCount(serverCount), + shards: shard.count + } + : { guilds: Util.resolveCount(serverCount) } + }) + } + + /** + * Gets the bot listed on this service. + * @param id The bot's ID + */ + getBot(id: IDResolvable) { + return this._request({ url: `/bot/${Util.resolveID(id)}` }) + } + + /** + * Gets the Unix Epoch Timestamp of the last time this user voted for this bot on this service. + * @param botID The bot's ID + * @param userID The user's ID + */ + getBotVotes(botID: IDResolvable, userID: IDResolvable) { + return this._request( + { + url: `/lastvoted/${Util.resolveID(userID)}/${Util.resolveID(botID)}`, + headers: { Authorization: this.token } + }, + { + requiresToken: true + } + ) + } +}