Files
SMScripts/scripting/examples/outdated/discord_test.sp
2025-04-15 22:27:20 -04:00

135 lines
3.9 KiB
SourcePawn

#pragma semicolon 1
#define PLUGIN_VERSION "1.10"
#include <sourcemod>
#include <discord>
#define BOT_TOKEN "INSERT TOKEN HERE"
public Plugin myinfo =
{
name = "Discord Test",
author = "Deathknife",
description = "",
version = PLUGIN_VERSION,
url = ""
};
DiscordBot gBot;
public void OnPluginStart() {
RegConsoleCmd("sm_getguilds", Cmd_GetGuilds);
RegConsoleCmd("sm_recreatebot", Cmd_RecreateBot);
RegConsoleCmd("sm_webhooktest", Cmd_Webhook);
}
public void OnPluginEnd() {
if(gBot != null) {
gBot.DestroyData();
delete gBot;
}
}
public void OnAllPluginsLoaded() {
gBot = new DiscordBot(BOT_TOKEN);
}
public Action Cmd_Webhook(int client, int argc) {
DiscordWebHook hook = new DiscordWebHook("https://ptb.discordapp.com/api/webhooks/265660968086929419/z3_F8CEGNu1Wtdygv4v0Pg4YRBA8QxgmzFKqjkEleSf2BOuQ8Xz7Ub05ku2j-O2vofy7");
hook.SlackMode = true;
hook.SetUsername("Server");
hook.SetColor("#ff2222");
hook.SetTitle("Testing WebHook");
hook.SetContent("@here");
hook.AddField("Field1", "Test1", true);
hook.AddField("abc def", "deef", true);
hook.Send();
delete hook;
hook = new DiscordWebHook("https://ptb.discordapp.com/api/webhooks/265660968086929419/z3_F8CEGNu1Wtdygv4v0Pg4YRBA8QxgmzFKqjkEleSf2BOuQ8Xz7Ub05ku2j-O2vofy7");
hook.SetUsername("Testing");
hook.SlackMode = false;
hook.SetContent("Testing 1 2 3");
hook.Send();
delete hook;
}
public Action Cmd_GetGuilds(int client, int argc) {
gBot.GetGuilds(GuildList, GuildListAll, GetClientUserId(client));
ReplyToCommand(client, "Trying!");
return Plugin_Handled;
}
public Action Cmd_RecreateBot(int client, int argc) {
if(gBot != null) {
gBot.DestroyData();
delete gBot;
}
gBot = new DiscordBot(BOT_TOKEN);
ReplyToCommand(client, "Recreated");
}
public void GuildList(DiscordBot bot, char[] id, char[] name, char[] icon, bool owner, int permissions, any data) {
int client = GetClientOfUserId(data);
if(client > 0 && IsClientConnected(client) && IsClientInGame(client)) {
PrintToConsole(client, "Guild [%s] [%s] [%s] [%i] [%i]", id, name, icon, owner, permissions);
gBot.GetGuildChannels(id, ChannelList, INVALID_FUNCTION, data);
}
}
public void ChannelList(DiscordBot bot, char[] guild, DiscordChannel Channel, any data) {
int client = GetClientOfUserId(data);
if(client > 0 && IsClientConnected(client) && IsClientInGame(client)) {
char name[32];
char id[32];
Channel.GetID(id, sizeof(id));
Channel.GetName(name, sizeof(name));
PrintToConsole(client, "Channel for Guild(%s) - [%s] [%s]", guild, id, name);
if(Channel.IsText) {
//Send a message with all ways
gBot.SendMessage(Channel, "Sending message with DiscordBot.SendMessage");
gBot.SendMessageToChannelID(id, "Sending message with DiscordBot.SendMessageToChannelID");
Channel.SendMessage(gBot, "Sending message with DiscordChannel.SendMessage");
gBot.StartListeningToChannel(Channel, OnMessage);
}
}
}
public void OnMessage(DiscordBot Bot, DiscordChannel Channel, const char[] message) {
PrintToServer("Message from discord: %s", message);
if(StrEqual(message, "Ping", false)) {
gBot.SendMessage(Channel, "Pong!");
}
}
public void GuildListAll(DiscordBot bot, ArrayList Alid, ArrayList Alname, ArrayList Alicon, ArrayList Alowner, ArrayList Alpermissions, any data) {
int client = GetClientOfUserId(data);
if(client > 0 && IsClientConnected(client) && IsClientInGame(client)) {
char id[32];
char name[64];
char icon[128];
bool owner;
int permissions;
PrintToConsole(client, "Dumping Guilds from arraylist");
for(int i = 0; i < Alid.Length; i++) {
GetArrayString(Alid, i, id, sizeof(id));
GetArrayString(Alname, i, name, sizeof(name));
GetArrayString(Alicon, i, icon, sizeof(icon));
owner = GetArrayCell(Alowner, i);
permissions = GetArrayCell(Alpermissions, i);
PrintToConsole(client, "Guild: [%s] [%s] [%s] [%i] [%i]", id, name, icon, owner, permissions);
}
}
}
public Action Cmd_SendMsg(int client, int argc) {
//
}