Giter Site home page Giter Site logo

shimeo98 / discordwhitelisterspigot Goto Github PK

View Code? Open in Web Editor NEW
41.0 4.0 22.0 277 KB

Spigot plugin that allows whitelisting users through a discord text channel.

License: MIT License

Java 100.00%
spigot spigot-plugin minecraft-server discord-bot whitelist

discordwhitelisterspigot's Introduction

Discord Whitelister Bot for Spigot

A simple spigot plugin which allows whitelisting through a discord text channel. This provides an easy way for users to whitelist without needing to be on the minecraft server.

Features:

  • 3 separate role groups:

    • add-remove group: allows the user to add and remove users from the whitelist an unlimited amount of times (recommended for owners and admins)
    • add group: allows the user to add to the whitelist an unlimited amount of times (recommended for moderators)
    • limited-add group: allows the user to whitelist a limited amount of times (recommended for users, default amount is 3)
    • limited-add group can be disabled in the config (enabled by default)
  • Removed list:

    • This list removes the ability for limited-add users to add back users that have been removed by the add-remove group
    • Can be disabled in the config (enabled by default)
  • Discord commands:

    • Use /whitelist add "minecraftUsername" in a valid channel to whitelist people on your minecraft server
    • Use /whitelist remove "minecraftUsername" in a valid channel to remove people from the whitelist on your minecraft server
    • Use /whitelist in a valid channel to get info about the bot and how to use it
  • Custom Message Support:

    • Allows editing of server response messages (file is located at (server-root)/plugins/DiscordWhitelister/custom-messages.yml)
    • This feature is disabled by default and can be enabled in the config file (use-custom-messages)
    • Note: Only message variables ({Sender} for example) in the original messages will be evaluated. For example: using {MaxWhitelistAmount} in the "insufficient-permissions" string/message will not work as it was never in the original string/message.
  • Use Discord server/guild role ids instead of role names:

    • Allows the use of ids of roles instead of names, for example: 445666895333687347 instead of Admin
    • To enable this set 'use-id-for-roles' to true
    • Example of relevant fields changed in the config to use ids:
       add-remove-roles:
       - 446223693887176704
       add-roles:
       - 485463455940214794
       limited-add-roles:
       - 639221397981233162
       use-id-for-roles: true
  • Reload command:

    • Use the command 'dwreload' or 'discordwhitelisterreload' to reload the config and re-initialize the bot without having to restart the Minecraft server
  • Automatically add/remove a role when adding/removing to/from the whitelist

    • This feature is meant to be used when users can add themselves to the whitelist.
    • If whitelisted-role-auto-add is set to true (false by default), the Discord role with the name defined by whitelisted-role ("Whitelisted" by default) will be added to that user when they successfully add (themselves) to the whitelist.
    • If whitelisted-role-auto-remove is set to true (false by default), that role will be removed from that user when they successfully remove (themselves) from the whitelist.
    • This requires:
      • The bot to have the Manage Roles permission in Discord
      • Setting up a Discord role with the same name (case sensitive) as the config
      • The bot's role must be higher than the whitelist role
  • Only select Discord roles can whitelist through the bot

  • Bot only listens for messages in select text channels

  • Logs whitelist attempts from valid roles in the console

Set Up:

Config file is located at: (server-root)/plugins/DiscordWhitelister/discord-whitelister.yml, this needs a valid bot token and valid channel id(s) to work. To create a Discord application and/or find your discord bot token, follow this link: https://discordapp.com/developers/applications/

Here is a short video showing all the steps needed to configure the bot: https://youtu.be/OqaeItuLefU

Backwards compatibility (Only applies to versions lower than v1.2.0)

Version 1.2.0 onwards are not compatible with version 1.1.x and lower. This is due to the layout of user-list.yml being changed. You will need to remove user-list.yml manually and let the plugin create a new one. If you upgrade without doing so, registration will not work correctly.

discordwhitelisterspigot's People

Contributors

dependabot[bot] avatar doc94 avatar shimell avatar themrengman avatar timroejr avatar vacer25 avatar xyntexx avatar zaanposni avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

discordwhitelisterspigot's Issues

Working on 1.8 ?

Hi i know that on SpigotMC the plugin is not listed for the 1.8.
Is there any legacy plugin version that works with 1.8.x?
Thanks!

Feature Request

Can you make it work so like when someone is whitelisted it whitelists them twice, so the first one whitelists [player name], and the second whitelists *[player name]? That way it'll work with GeyserMC.

''On-Whitelist-Commands''

The ''On-Whitelist-Commands'' is really annoying as it broadcasts a message every time someone is whitelisted and when I manually removed it, it just came back when I restarted the server.

New Discord Whitelist remove if role isn't present command but I have no clue what I am doing

Kinda new to GitHub, so I don't quite get how to implement my own code solutions into the code without officially submitting it. This piece of code would be for automatically removing the Whitelist of someone when they lose a specific role. My use of this is for a Twitch sub only minecraft server that would remove the whitelist once they are no longer a Twitch Subscriber (Role in Discord), but I have not a single clue of how to make the .jar file myself, and all of my attempts have not worked. I adapted the onGuildMemberRemove function to create this. As far as I can tell the function should work, all that would need to be implemented is a way in the config file to enable or disable it, and to add a role to check for. This code uses the GuildMemberRoleRemove event to work. Below is the code:

@Override
public void onGuildMemberRoleRemove(@Nonnull GuildMemberRoleRemoveEvent event)
{
	for(Role rl : event.getMember().getRoles())
	{
		if(rl.getName() == "Twitch Subscriber")
		{
			return;
		}
	}
    	String discordUserToRemove = event.getMember().getId();
    	DiscordWhitelister.getPlugin().getLogger().info(discordUserToRemove + " lost their sub. Removing their whitelisted entries...");
    	List<?> ls =  UserList.getRegisteredUsers(discordUserToRemove);

    	if(ls != null)
    	{
        		for (Object minecraftNameToRemove : ls)
        		{
            		DiscordWhitelister.getPlugin().getLogger().info(minecraftNameToRemove.toString() + " lost their sub. Removing their whitelisted entries.");
            		if (WhitelistedPlayers.usingEasyWhitelist)
            		{
                			ExecuteServerCommand("easywl remove " + minecraftNameToRemove.toString());
            		} else 
			{
                			ExecuteServerCommand("whitelist remove " + minecraftNameToRemove.toString());
            		}
        		}
        		try
        		{
            		UserList.resetRegisteredUsers(discordUserToRemove);
        		}
        		catch (IOException e)
        		{
            		e.printStackTrace();
            		return;
        		}
        		DiscordWhitelister.getPlugin().getLogger().info(discordUserToRemove + " lost their sub. Successfully removed their whitelisted entries from the user list.");
    	}
    	else
    	{
        		DiscordWhitelister.getPlugin().getLogger().warning(discordUserToRemove + " lost their sub. Could not remove any whitelisted entries as they did not whitelist through this plugin.");
    	}
}

Question Allow Command from Bots

I have a question about your Discord Whitelister plugin.
Is it possible that when a Bot sends a Commands like "!whitelist add "name" that the Whitelist bot reacts to it and adds the player?
Now only when a user sends a command the Whitelist bot reacts.

New Feature Request 2.0

Cheers for that latest change, brilliant response time.

Possible to code in a limit system too as in able to specify a limit to how many whitelists you can have per user?

Would be brilliant to have for my SMP community where they can have say 3 whitelists of a friend.

If not, no problem!

Plugin will hang the whole server while missing permission

When the plugin does not have SERVER MEMBERS INTENT on discord itself enabled, it will hang the server saying:

[12:31:48] [OkHttp https://discordapp.com/.../WARN]: [uk.co.angrybee.joe.dependencies.com.fasterxml.jackson.databind.ext.Java7Support] Unable to load JDK7 types (annotations, java.nio.file.Path): no Java7 support added

If you do enable SERVER MEMBERS INTENT this problem is solved, and the plugin will load correctly.

Maybe add a message saying that that needs to be enabled? to prevent confusion to others. DiscordSRV does give this alert:

[00:00:42 ERROR]: [DiscordSRV] DiscordSRV and its API hooks require these intents to function. Instructions:
[00:00:42 ERROR]: [DiscordSRV] 1. Go to https://discord.com/developers/applications
[00:00:42 ERROR]: [DiscordSRV] 2. Click on the DiscordSRV bot
[00:00:42 ERROR]: [DiscordSRV] 3. Click on "Bot" on the left
[00:00:42 ERROR]: [DiscordSRV] 4. Enable the "SERVER MEMBERS INTENT"
[00:00:42 ERROR]: [DiscordSRV] 5. Restart your server 

Request: Let @everyone add themselves to the whitelist

I want to enter the role ID of @everyone in limited-add-roles with use-id-for-roles: true. Bot currently does not recognize the @everyone ID. (Insufficient Permissions)
So that I don't always have to assign a role to each and every new user on my private Discord server.

Bot is offline?

I have followed the tutorial video but the bot is offline - Do I need to do anything else to enable the bot?

I did the following

  1. created the app on https://discord.com/developers/applications
  2. added a bot
  3. invited the bot to my server as admin
  4. enabled the Server Members Intent
  5. Copied and added the bot token to the discord-whitelister.yml file
  6. enabled permission via ID and added myself
  7. added 'channel-ID' to target text channel
  8. Rebooted the server

Yet the bot is still offline.

Allow Bots to Whitelist Users

Me and my friend were trying to automate a whitelisting process on our server, but the whitelister bot does not respond to commands sent by other bots
I know this is not an issue but, is there a way for me to get around this by changing some code or would i have to build my own plugin from scratch?

Feature Request: Ability to reload whitelist from within discord

What are you reporting?

  • Issue
  • Feature Request
  • Bug

If Feature Request, what are you requesting to be added?

New Command

Describe the feature you want to be added:

The ability to use a command on discord to reload the whitelist on the fly - So for example, if you run a patreon that allows instant whitelist to the server, you can easily whitelist a user using !whitelist add userName then immediately reload the whitelist for that server as follows:

Figure 1: Example of Discord Embed with command
Example of what this should look like (Made with Discohook, Webhook Generator)

What the above shows, is a user enters the command !whitelist reload and the bot responds "<user>, the whitelist has been reloaded".

Hope it makes sense what I am requesting. If not, feel free to reply here and I will attempt to reply ASAP.
~ Wolfstorm

Limited-Add-Role not working like it's supposed to.

Hi there! So first of all thank you for developing such a useful and awesome plugin!

Hopefully you can help. Basically I have my limited-add-role set to a rank on discord and the max-whitelist-amount set to 1. When players whitelist someone in the channel the 1 use changes to 0 but they can still continue to whitelist people past that point even tho it displays 0. Please help!

Thanks.

Bot completely non-responsive

I've now tried to setup the Discord bot and configure the plugin three separate times, deleting all the files and starting over from scratch each time. Everything seems fine and there's no errors in my Minecraft log with Discord Whitelister and once the server is started up, my bot is online. When I try to use the /whitelist command in the channel that I set using channel IDs, nothing shows up, nor does it work in any other channel.

I've uploaded what I see in my server log when starting my server showing that everything seems fine as far as that goes, and my config file (with my bot token redacted). I'm not sure what I'm doing wrong, but I'm sure it's something on my end.
And to note, I had to change my config file from .yml to .txt to upload so it is normally .yml

DWLogRef.txt
discord-whitelister.txt

Bot cant find any MC Username

The command !whitelist add MC USERNAME continues to say
"@DiscordUsername, failed to add MC USERNAME to the whitelist. This is most likely due to an invalid Minecraft username".

However we have tried it on multiple other accounts and still have had no luck with it.

To add more context, we have used this plugin for a week and had no errors but today it started acting up and no changes were made to the MC server.

The only error I can find is that the Easy Whitelist gets disabled on start up but one of my admins informed me it had been like that since we started.

Suggestion: Channel in M.O.S.S

MOSS is an Discord for Minecraft Open-Source Software with a lot of big plugins: prism, essentialsX, factionsuuid and many more.

You could ask for a channel and role like the other developers so you we can easier chat with you. Would be really fun to see you there.

Keep up the really really good work

help me pls

when i run the command the bot dosent do anything. the bot dosent give me any reply. please help discord- TheAnay#3112

Bot not Online

Hey, i use the latest build of the bot (1.4.9) and followed the instruction video, but my bot is still offline. While starting the Server, this messages ocured:

[17:08:36 INFO]: [DiscordWhitelister] Enabling DiscordWhitelister v1.4.8*
[17:08:36 INFO]: [DiscordWhitelister] Initializing Discord client...
[17:08:38 INFO]: [DiscordWhitelister] Server thread                                 JDA             INFO   Login Successful!
[17:08:39 INFO]: [DiscordWhitelister] JDA MainWS-ReadThread                         WebSocketClient INFO   Connected to WebSocket
[17:08:39 INFO]: [DiscordWhitelister] JDA MainWS-WriteThread                        WebSocketClient ERROR  WebSocket connection was closed and cannot be recovered due to identification issues
[17:08:39 INFO]: CloseCode(4014 / Disallowed intents. Your bot might not be eligible to request a privileged intent such as GUILD_PRESENCES or GUILD_MEMBERS.)
[17:08:39 ERROR]: [DiscordWhitelister] Cannot connect as this bot is not eligible to request the privileged intent 'GUILD_MEMBERS'
[17:08:39 ERROR]: [DiscordWhitelister] To fix this, please enable 'SERVER MEMBERS INTENT' located at https://discord.com/developers/applications -> the application you're using to run this bot -> the button called 'bot' on the left
[17:08:39 ERROR]: [DiscordWhitelister] Discord Client failed to initialize, please check if your config file is valid

I am using Minecraft 1.17.1 Paper on Pterodactyl Panel (Version: 1.6.2).

Whitelist command issues

It appears the bot is having some form of issue responding to the command. The console shows nothing and the bot is online with the channel ID listed but when /whitelist is run it does not respond to any of it. I can send my config over if need be (Minus the bot token) and see if something was perhaps improperly setup

Add api-version to plugin file?

Excellent plugin!

Currently this plugin will trigger "loading legacy material/plugin support" on Paper 17. Although this does not prevent proper plugin performance, an api-version should be able to be added without breaking backwards-compatibility. Additionally, in plugins.yml, the most recent version (1.4.9) is still listed as 1.4.8.

Custom skin system

Could you add support for the skin of the system so that you can use not minotar but any other?

Allow user to unwhitelist themselves

It would be really cool if someone could remove only themselves from the whitelist and get their allocation back. Not sure how simple this would be, but if its possible that would make this plugin perfect.

Trying to recompile and debug...

Hello Joe,

I have pulled your latest code from this repo. I have it compiling in IntelliJ with Maven.

I am trying to debug it and figure out what is causing the errors in the log.

When I run it I get the below dump in the log, but the error is occurring on

at uk.co.angrybee.joe.DiscordWhitelister.InitBot(DiscordWhitelister.java:201) ~[DiscordWhitelister.jar:?]
at uk.co.angrybee.joe.DiscordWhitelister.onEnable(DiscordWhitelister.java:88) ~[DiscordWhitelister.jar:?]

Which is this line:
DiscordClient.customWhitelistAddPrefix = customPrefixConfig.getFileConfiguration().getString("whitelist-add-prefix").toLowerCase();

Actually any use of class DiscordClient causes this...

I have read hundreds of internet articles on this "NoClassDefFoundError" / "ClassNotFoundException"

it is telling me that the class-path is not correct.
I cannot figure out where to fix that.

Any assistance would be appreciated.

java.lang.NoClassDefFoundError: net/dv8tion/jda/api/hooks/ListenerAdapter
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
at java.lang.ClassLoader.defineClass(ClassLoader.java:1010) ~[?:?]
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[?:?]
at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:197) ~[patched_1.17.1.jar:git-Paper-391]
at java.lang.ClassLoader.loadClass(ClassLoader.java:586) ~[?:?]
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:108) ~[patched_1.17.1.jar:git-Paper-391]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103) ~[patched_1.17.1.jar:git-Paper-391]
at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
at uk.co.angrybee.joe.DiscordWhitelister.InitBot(DiscordWhitelister.java:201) ~[DiscordWhitelister.jar:?]
at uk.co.angrybee.joe.DiscordWhitelister.onEnable(DiscordWhitelister.java:88) ~[DiscordWhitelister.jar:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[patched_1.17.1.jar:git-Paper-391]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[patched_1.17.1.jar:git-Paper-391]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:500) ~[patched_1.17.1.jar:git-Paper-391]
at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugin(CraftServer.java:561) ~[patched_1.17.1.jar:git-Paper-391]
at org.bukkit.craftbukkit.v1_17_R1.CraftServer.enablePlugins(CraftServer.java:475) ~[patched_1.17.1.jar:git-Paper-391]
at net.minecraft.server.MinecraftServer.loadWorld(MinecraftServer.java:733) ~[patched_1.17.1.jar:git-Paper-391]
at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:317) ~[patched_1.17.1.jar:git-Paper-391]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1220) ~[patched_1.17.1.jar:git-Paper-391]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:319) ~[patched_1.17.1.jar:git-Paper-391]
at java.lang.Thread.run(Thread.java:831) ~[?:?]
Caused by: java.lang.ClassNotFoundException: net.dv8tion.jda.api.hooks.ListenerAdapter
at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:151) ~[patched_1.17.1.jar:git-Paper-391]
at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:103) ~[patched_1.17.1.jar:git-Paper-391]
at java.lang.ClassLoader.loadClass(ClassLoader.java:519) ~[?:?]
... 20 more

function

Is there a way so I can connect other people's Discord to minecraft accounts, because I'm the admin and i want full control.

Something like this:
!whitelist @discorduser#1111 minecraftplayer

Plugin breaks after a few whitelists?

The plugin breaks every now and then. When people try to whitelist, nothing happens. I look in console and see a bunch of errors, I can fix this temp by reloading the plugin but then it happens again after the second whitelist or something.

as

Hey,when i add myself to the whitelist,the console says im added,but i cant join.
It says "youre not whitelisted".

error: when adding someone with not enough permissions

There is a small error when adding someone as a admin with !whitelist add .

.... [14:42:36 ERROR]: [DiscordWhitelister] Could not add role with name/id to Rundog, check the config and that the bot has the Manage Roles permission
.... [14:42:36 WARN]: uk.co.angrybee.joe.shaded.net.dv8tion.jda.api.exceptions.HierarchyException: Can't modify a role with higher or equal highest role than yourself! Role: R:Survival(786674135191257088)
.... [14:42:36 WARN]: at uk.co.angrybee.joe.shaded.net.dv8tion.jda.internal.entities.GuildImpl.checkPosition(GuildImpl.java:1475)
.... [14:42:36 WARN]: at uk.co.angrybee.joe.shaded.net.dv8tion.jda.internal.entities.GuildImpl.addRoleToMember(GuildImpl.java:1209)
.... [14:42:36 WARN]: at uk.co.angrybee.joe.commands.discord.CommandAdd.lambda$null$1(CommandAdd.java:523)
.... [14:42:36 WARN]: at java.lang.Iterable.forEach(Iterable.java:75)
.... [14:42:36 WARN]: at uk.co.angrybee.joe.commands.discord.CommandAdd.lambda$ExecuteCommand$3(CommandAdd.java:521)
.... [14:42:36 WARN]: at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftFuture.run(CraftFuture.java:88)
.... [14:42:36 WARN]: at org.bukkit.craftbukkit.v1_16_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:468)
.... [14:42:36 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1294)
.... [14:42:36 WARN]: at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:377)
.... [14:42:36 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1209)
.... [14:42:36 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:997)
.... [14:42:36 WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:178)
.... [14:42:36 WARN]: at java.lang.Thread.run(Thread.java:748)

Discord name to MC name

Hi there Joe,

I'm planning to set up your bot on our server.
We want to auto whitelist people when they are member of a discord group.
should be possible if I read correctly, But how does the discord bot know the users MC name?

Looking forward to your support.

Feature Request - BungeeCord/Waterfall Support

Hi, I used your plugin for a while now, but unfortunatly I switched my servers to BungeeCord (Waterfall) and therefor I lost functionality of your plugin.
It would be great and massively helpful if you could add Bungee (Waterfall) support.

Thank you in advance,

X00LA

easy whitelist not working

when trying to whitelist someone with easy whitelist it doesnt works, some people are able to add their username, but others cant and says theres probably a username problem. please fix that.

Discord Bot Trouble

Hello, I'm trying to set up a bot with your discord-whitelister plugin. But having trouble getting my bot to come online, can you help me with this?

Allow whitelisting from bots

I have a setup where new applicants submit whitelist request via a webhook. Server members then vote to accept the new member by adding reactions on the whitelist request. I want to automate the process of whitelisting new applications with a bot, but DiscordWhitelisterSpiggot rejects all messages from bots.

It would be nice if DiscordWhiteListerSpiggot could filter out only itself:

@@ -320,7 +320,7 @@ public class DiscordClient extends ListenerAdapter
             if (!Arrays.asList(targetTextChannels).contains(messageReceivedEvent.getTextChannel().getId()))
                 return;
 
-            if (messageReceivedEvent.getAuthor().isBot())
+            if (messageReceivedEvent.getMessage().getAuthor().getIdLong() == javaDiscordAPI.getSelfUser().getIdLong())
                 return;
 
             String messageContents = messageReceivedEvent.getMessage().getContentRaw();

I dont't thiunk it's necessary to add an "authorized bots" whitelist since this is manageable with the existing roles auhorizations.

New Feature Request

Could you possibly make it so that the whitelist remove has a role for that too? To seperate up add/remove as we would like some to be able to add but not remove.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.