Added linked role and unlink method
This commit is contained in:
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user