# ███████████████████████████████████████████████████████████ # ██ [ dDiscord Chat Relay ] ██ # ██ [ ] ██ # ██ [ The config for this file should be ] ██ # ██ [ SEPARATE from this script; you do ] ██ # ██ [ NOT want to keep your bot token in ram, ] ██ # ██ [ keep it separate. Anyone with your ] ██ # ██ [ token has full access to your bot. ] ██ # ██ [ ] ██ # ██ [ Step one: Create a discord bot. If you ] ██ # ██ [ need further instructions, you should ] ██ # ██ [ seek a guide online. ] ██ # ██ [ ] ██ # ██ [ You need to obtain # ID's: ] ██ # ██ [ * Your Bot Token. Can be obtained here: ] ██ # ██ [ https://discordapp.com/developers/applications/ ] ██ # ██ [ * Your Discord Channel ID's. ] ██ # ██ [ Right click the channel > Copy ID ] ██ # ██ [ ] ██ # ██ [ Create a directory in your denizen folder: ] ██ # ██ [ * /plugins/denizen/Data/ ] ██ # ██ [ ] ██ # ██ [ Create the external file inside: ] ██ # ██ [ * Discord_Chat_Relay_Config.yml ] ██ # ██ [ ] ██ # ██ [ Paste the bot's information ] ██ # ██ [ ] ██ # ███████████████████████████████████████████████████████████ # ███ [ Discord chat format ] ███ DiscordRelayChatFormat: type: format debug: false format: "<&3><&l>[<&r><&b>Discord<&3><&l>]<&r><&f>" # ███ [ DiscordBot | Discord Control ] ███ Discord_Relay_Chat_Handler: type: world debug: true events: # ███ [ Server Startup ] ███ on server start: - wait 5s - run Discord_Chat_Relay_Config instantly context:-a - wait 1s - discord id:discord_chat_relay message channel: "<&co>white_check_mark<&co> **Server has started**" # ███ [ Ingame Chat Relay ] ███ on player chats: - discord id:discord_chat_relay channel: message "**** ****: " #$ Don't have Permission Groups? Remove: # ███ [ Discord Chat Relay ] ███ on discord message received for:discord_chat_relay: #@ Check if the author is the bot - if == : - stop #@ Check if the channel is being sent in the mainchat, if the message is blank - if == && != "": - announce format:DiscordRelayChatFormat " | ]||><&r> <&8>»<&f> " # ███ [ Discord Player Events ] ███ on player first logs in: - discord id:discord_chat_relay message channel: "<&co>confetti_ball<&co> ** has logged in for the first time. Welcome them!** <&co>confetti_ball<&co>" on player joins: - discord id:discord_chat_relay message channel: "<&co>heavy_plus_sign<&co> ** has logged in.**" on player quits: - discord id:discord_chat_relay message channel: "<&co>heavy_multiplication_x<&co> ** has left the server.**" on player dies: - discord id:discord_chat_relay message channel: "<&co>skull<&co> ****" on shutdown: - discord id:discord_chat_relay message channel: "<&co>octagonal_sign<&co> **Server is restarting - Please wait**" - flag server discord.botstatus:! # ███ [ Discord Player Events | Addons ] ███ on votifier vote: - discord id:discord_chat_relay message channel: "<&co>diamond_shape_with_a_dot_inside<&co> **** voted!" # ███ [ Discord Channel Command/Update ] ███ Discord_Link_And_Configuration_Command: type: command name: discord debug: false description: Sends you the discord join link permission: discord.command permission message: "You do not have permission" usage: /discord aliases: - disc tab complete: - if : - define Args - define messageArgs #@ /discord█ - if == 0: - determine <[Args]> #@ /discord█Arg - else if == 1 && !]>: - determine <[Args].filter[starts_with[]]> - if != Message: - stop #@ /discord█Arg█ - if == 1 && ]>: - determine <[messageArgs]> #@ /discord█Arg█Arg - else if == 2 && !]>: - determine <[messageArgs].filter[starts_with[]]> syntax message: #@ Message Hint event - inserts /discord - define Hover0 "<&a>Click to enter<&2>:<&nl><&6>/<&e>Discord" - define Text0 "<&6>/<&e>discord" - define Hint0 "discord" - define ClickEvent0 <&hover[<[Hover0]>]><&click[/<[Hint0]>].type[suggest_command]><[Text0]><&end_click><&end_hover> #@ Check if Player is Operator for Command Syntax - if : #@ Message Hint event - inserts /discord reload - define Hover1 "<&a>Click to enter<&2>:<&nl><&6>/<&e>Discord Reload" - define Text1 "<&6>(<&e>reload<&6>)" - define Hint1 "discord reload" - define ClickEvent1 <&hover[<[Hover1]>]><&click[/<[Hint1]>].type[suggest_command]><[Text1]><&end_click><&end_hover> #@ Message Hint event - inserts /discord reload -a - define Hover2 "<&a>Click to enter Reload All command!" - define Text2 "<&6>(<&e>-a<&6>)" - define Hint2 "discord reload -a" - define ClickEvent2 <&hover[<[Hover2]>]><&click[/<[Hint2]>].type[suggest_command]><[Text2]><&end_click><&end_hover> #@ Message Hint event - inserts /discord message - define Hover3 "<&a>Click to enter Message Channel command!" - define Text3 "<&6>(<&e>Message ChannelName<&6>)" - define Hint3 "discord message " - define ClickEvent3 <&hover[<[Hover3]>]><&click[/<[Hint3]>].type[suggest_command]><[Text3]><&end_click><&end_hover> #@ Narrate Syntaxes - narrate "<&e>Syntax<&co> <[ClickEvent0]> <[ClickEvent1]> <[ClickEvent2]>/<[ClickEvent3]><&nl><&3> as well as reloads the discord configuration if specified to reload, optionally includes reloading the discord bot token (-a)." - else: - narrate "<&e>Syntax<&co> <[ClickEvent0]><&nl><&3>" script: #@ Check args; "/discord" or "/discord link" - define Arg1 - if == 0 || <[Arg1]> == "link": - if !: - narrate "<&c>No link has been set up! Contact your server administrator to have them fix this!" - stop - define Hover "<&a>Click to follow the discord link!<&nl><&b><&n>" - define Text " <&a>Link<&2>: <&b><&n>" - define URL "" - narrate format:DiscordRelayChatFormat "<&hover[<[Hover]>]><&click[<[URL]>].type[OPEN_URL]><[Text]><&end_click><&end_hover>" - stop #@ Check args; "/discord ARG" requires operator - else if > 1 && !: - inject locally "syntax message" instantly - stop #@ Check args; "/discord reload -a" or "/discord reload" - else if <[Arg1]> == reload: - if ]>: - run Discord_Chat_Relay_Config instantly context: - stop - else: - inject locally "syntax message" instantly #@ Check args; "/discord message" - else if <[Arg1]> == "message": #@ Check args; did the player only specify "/discord message"? - if == 1: - narrate "<&c>You must specify a channel to message!" - stop #@ Check args; did the player only specify "/discord message channelname"? - else if == 2: #@ Does the channel even exist? - if ]>: #@ Okay, the channel exists but you still typed it wrong - narrate "<&c>You must specify a message to send!" - else: #@ Not only did you type a bad channel, you didn't even type a message - narrate "<&6>[<&e><&6>]<&c> is an invalid channel, and you must specify a message to send!" - stop - else: #@ Check if the bot running - if : - if == running: #@ Check if the channel exists - define Channel - if ]>: #@ Send! - discord id:discord_chat_relay message channel:]> ].parse_color.strip_color> - else: - narrate "<&6>[<&e><[Channel]><&6>]<&c> is an invalid channel!" - else: - narrate "<&c>Bot is not running!" - stop - else: - narrate "<&c>Bot is not running!" - stop - else: - narrate "<&6>[<&e><[Arg1]><&6>]<&c> is an invalid Discord Command!" - stop # ███ [ DiscordBot | Configuration ] ███ Discord_Chat_Relay_Config: type: task debug: false definitions: Arg2 script: #@ Check if the Configuration file exists - if !: - announce to_console "<&2>ERROR: CONFIGURATION FILE NOT FOUND.<&nl>For Support, ask in the <&e>Denizen Discord<&6>:<&nl> <&b>https://discord.gg/Q6pZGSR" - stop #@ Load the Configuration file - yaml load:data/Discord_Chat_Relay_Config.yml id:discord_chat_relay_temp - flag server discord.key:loaded #@ Check if doing a full reload - if <[Arg2]> == "-a": #@ Check if the bot is running; Disconnect if it is - if == "running": - flag server discord:! - discord id:discord_chat_relay disconnect #@ Connect the bot - discord id:discord_chat_relay connect code: - flag server discord.botstatus:running #@ Flag the link and channels - flag server discord.link: - flag server discord.channels:! - define Channels - flag server discord.channels:|:<[Channels]> - foreach <[Channels].exclude[mainchat]> as:Channel: - flag server discord.channel.<[Channel]>:]> - flag server discord.channel.mainchat: - yaml unload id:discord_chat_relay_temp - flag server discord.key:!