diff --git a/DiscordVerifier/src/Main.java b/DiscordVerifier/src/Main.java index 7f17317..228a4e5 100755 --- a/DiscordVerifier/src/Main.java +++ b/DiscordVerifier/src/Main.java @@ -8,6 +8,8 @@ import java.net.Socket; public class Main extends JavaPlugin { + Thread serversocket; + public void onEnable() { getLogger().info("DiscordVerifier Plugin enabled"); PluginManager pm = getServer().getPluginManager(); @@ -17,7 +19,7 @@ public class Main extends JavaPlugin { } public void start_socketserver() { - new Thread(() -> { + serversocket = new Thread(() -> { try{ ServerSocket ss = new ServerSocket(3333); while (true) { @@ -32,13 +34,14 @@ public class Main extends JavaPlugin { System.out.println("message: " + inputLine); String[] info = inputLine.split("\t"); - Player player = getServer().getPlayer(info[0]); + String discordname = info[0]; + Player player = getServer().getPlayer(info[1]); if (player == null){ out.println("PlayerError"); }else { out.println("success"); - String code = info[1]; - send_chat(player, code); + String code = info[2]; + send_chat(discordname, player, code); } } } @@ -46,14 +49,17 @@ public class Main extends JavaPlugin { } catch (Exception e) { System.out.println(e); } - }).start(); + }); + + serversocket.start(); } - public void send_chat(Player player, String code){ - player.sendMessage(code); + public void send_chat(String discordname, Player player, String code){ + player.sendMessage(discordname + " wants to link your account\nEnter this code in discord: " + code); } public void onDisable() { + serversocket.stop(); getLogger().info("Plugin disabled"); } diff --git a/cogs/playerlink.py b/cogs/playerlink.py index e6d883a..0ef7292 100644 --- a/cogs/playerlink.py +++ b/cogs/playerlink.py @@ -3,6 +3,7 @@ from discord.ext import commands import random import string import socket +from data import constants def get_random_string(length): # Random string with the combination of lower and upper case @@ -13,13 +14,13 @@ def get_random_string(length): class PlayerError(Exception): pass -def send_chat(minecraftname, code): +def send_chat(discordname, minecraftname, code): HOST = '127.0.0.1' # The server's hostname or IP address PORT = 3333 # The port used by the server with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: s.connect((HOST, PORT)) - s.send(bytes("{}\t{}\n".format(minecraftname, code), encoding="ascii")) + s.send(bytes("{}\t{}\t{}\n".format(discordname, minecraftname, code), encoding="ascii")) data = s.recv(1024) data_string = data.decode("utf-8").strip('\n') if data_string == "PlayerError": @@ -30,6 +31,10 @@ class PlayerLink(commands.Cog): def __init__(self, client): self.client = client + def get_linked_role(self): + return discord.utils.get(self.client.get_guild(constants.WorldCraft).roles, id=constants.roleLinked) + + @commands.command(name="Link") async def link(self, ctx, arg): @@ -41,19 +46,24 @@ class PlayerLink(commands.Cog): return message.channel.id == channelid and message.author.id == authorid try: - if send_chat(arg, code): - await ctx.send("A code has been sent to your minecraft chat in the WorldCraft server.\nSend it in this channel.") - msg = await self.client.wait_for('message', check=check) - if msg.content == code: - await ctx.send("The link was successfull") - else: - await ctx.send("Wrong code") + send_chat(ctx.author.name, arg, code) + await ctx.send("A code has been sent to your minecraft chat in the WorldCraft server.\nSend it in this channel.") + msg = await self.client.wait_for('message', check=check) + if msg.content == code: + await ctx.author.add_roles(self.get_linked_role()) + await ctx.send("The link was successfull") + else: + await ctx.send("Wrong code") except PlayerError: await ctx.send("Player '" + arg + "' not found") except: await ctx.send("Something went wrong") + @commands.command(name="Unlink") + async def unlink(self, ctx): + await ctx.author.remove_roles(self.get_linked_role()) + await ctx.send("Unlinked your account") def setup(client): diff --git a/data/constants.py b/data/constants.py index b143685..b9e55e9 100755 --- a/data/constants.py +++ b/data/constants.py @@ -9,5 +9,11 @@ roleAdmin = 730709756125249588 roleMod = 688328855605346339 roleOwner = 687996070986383436 +# User roles +roleLinked = 730709907275382904 # given when minecraft account is connected with discord account + +# Guild id +WorldCraft = 683422015394545665 + adminRoles = [roleAdmin, roleOwner] modPlusRoles = [roleAdmin, roleMod, roleOwner]