From 2cdeb26a3e955f248ef108276f816e4048a97d55 Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Fri, 12 Jun 2020 20:55:09 +0500 Subject: [PATCH 01/32] Create discord.json --- config/discord.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 config/discord.json diff --git a/config/discord.json b/config/discord.json new file mode 100644 index 0000000..fc5cb71 --- /dev/null +++ b/config/discord.json @@ -0,0 +1,12 @@ +{ + "token": "", +"refreshrate":"60000", + "range":"A2:E", + "spreadsheetId":"", +"apiKey":"", + + "refreshrate":"60000", + "roles": [], + "usernamesp": [] + +} From 59df63c9158e8bf54cc27c66c863885d832bca79 Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Fri, 12 Jun 2020 20:55:56 +0500 Subject: [PATCH 02/32] Create index.html --- public/index.html | 85 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 public/index.html diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..12495bf --- /dev/null +++ b/public/index.html @@ -0,0 +1,85 @@ + + + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + From e38e120823c23d62465fbd2adbcb279548d7c76e Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Fri, 12 Jun 2020 21:06:09 +0500 Subject: [PATCH 03/32] Update README.md --- README.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fff0b10..ab89ab3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,53 @@ -# form2role-bot -Discord bot that automatically assigns roles to users found in a Google Sheet +Form2Role-Bot: + +

About

+

This is the simplified version of talios0's and The24thDS's bot. The bot assigns the roles found in the 2nd,3rd,4th and 5th column of the spreadsheet to the usernames found in a 1st column of Google Sheet. Made possible by the amazing Discord.js library. +Please note that the bot start detecting the data from 2nd row of spreadsheet.

+

Motivation

+

Did you ever want to add some kind of authentication to your Discord server? Maybe you want only people with a certain email domain to have access to some channels. Use a form to collect the required data and then set up this bot to automatically assign roles to everyone found in the Google Sheet.

+ +

Required fields

+

The only field that you must have in your Google Form and Google Sheet is the DiscordID. Your DiscordID it's made up of your username and the discriminator, and it looks like this: SomeSexyUsername#4565. The bot needs it to identify users and assign roles to them.

+ +

How to get your Google details

+

API key

+

Go to https://console.developers.google.com +Login and Agree to the Terms of Service +Create a Project by pressing "Create Project" on the right-hand side +Click "Create", give the project a name and then "Create" again. +Once the dashboard loads, click on "ENABLE APIS AND SERVICES" in blue text. +Search for "Sheets" and click on "Google Sheets API" and then "ENABLE" +Click on "Credentials" on the left side of the page. +Select "Create credentials" and then "API Key" +Spreadsheet ID +Go to your Google Sheets document and make sure it is accessible to anyone with the link, view-only. +The id is the part from your URL that comes after /d/. If the url is https://docs.google.com/spreadsheets/d/hjgt6sdBhbHdDssfjGk/edit?usp=sharing, your id is hjgt6sdBhbHdDssfjGk +Range +If the column that contains the Discord IDs is B and the IDs start from row 2 then the range value (don't touch it, if you don't know what you are doing) +How to setup a Discord bot +You will need a bot token, to generate one follow these steps: + +Go to https://discordapp.com/developers and login +Create an application and give it a name and a description +Select "Save Changes" at the bottom right and then navigate to the "Bot" section on the left-hand side. +There, create a bot user by clicking on "Add Bot". After confirming, reveal the token. +Invite the bot to your discord server: + +Go to OAuth2 section of your developer application +Under SCOPES check bot +Under BOT PERMISSIONS check Manage Roles +Now go to the url generated in the SCOPES section and invite the bot to your server +Make sure the bot role is above the roles it has to assign +Configuration steps +Install Node.JS +Download the latest bot version from the release tab and unzip it +Go to the config folder, copy and paste the two config files, and rename them by removing .example +Open google.json and complete your API key, your Spreadsheet id and your range (See How to get your Google details). All of these are strings, so make sure they are enclosed in quotation marks. +Open discord.json and complete your token and the role names that you want the bot to assign. The token is a string, so it must be enclosed in quotation marks. The roles property is an array, it holds all of the role names that will be assigned o the users found in the Google Sheet. If you only want to assign one role then it should look like this: ["Role name"]; otherwise ["First role name", "Second role name"] and so on, make sure to separate the names with a comma ( , ) +Go back to the root folder, open a terminal here and run these commands: npm install, wait for it to finish then run npm start. +Congratulations, if you did everything correctly you now have Form2Role bot running. + +More info +The bot checks the sheet for new users every minute. However you can change that in the code. +Future updates will include mainly bug fixes. +Contributions are highly apreciated. From b27d018b1799c146739cbec44e69b9e27454670c Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Fri, 12 Jun 2020 22:57:16 +0500 Subject: [PATCH 04/32] Update README.md --- README.md | 94 +++++++++++++++++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index ab89ab3..d705461 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Form2Role-Bot:

About

-

This is the simplified version of talios0's and The24thDS's bot. The bot assigns the roles found in the 2nd,3rd,4th and 5th column of the spreadsheet to the usernames found in a 1st column of Google Sheet. Made possible by the amazing Discord.js library. +

This is the simplified version of talios0's and The24thDS's bot. The bot assigns the roles (according to the 2nd,3rd,4th and 5th column of the spreadsheet) to the usernames found in a 1st column of Google Sheet. Made possible by the amazing Discord.js library. Please note that the bot start detecting the data from 2nd row of spreadsheet.

Motivation

Did you ever want to add some kind of authentication to your Discord server? Maybe you want only people with a certain email domain to have access to some channels. Use a form to collect the required data and then set up this bot to automatically assign roles to everyone found in the Google Sheet.

@@ -11,43 +11,61 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

How to get your Google details

API key

-

Go to https://console.developers.google.com -Login and Agree to the Terms of Service -Create a Project by pressing "Create Project" on the right-hand side -Click "Create", give the project a name and then "Create" again. -Once the dashboard loads, click on "ENABLE APIS AND SERVICES" in blue text. -Search for "Sheets" and click on "Google Sheets API" and then "ENABLE" -Click on "Credentials" on the left side of the page. -Select "Create credentials" and then "API Key" -Spreadsheet ID -Go to your Google Sheets document and make sure it is accessible to anyone with the link, view-only. -The id is the part from your URL that comes after /d/. If the url is https://docs.google.com/spreadsheets/d/hjgt6sdBhbHdDssfjGk/edit?usp=sharing, your id is hjgt6sdBhbHdDssfjGk -Range -If the column that contains the Discord IDs is B and the IDs start from row 2 then the range value (don't touch it, if you don't know what you are doing) -How to setup a Discord bot -You will need a bot token, to generate one follow these steps: +

    +
  • Go to https://console.developers.google.com
  • +
  • Login and Agree to the Terms of Service
  • +
  • Create a Project by pressing "Create Project" on the right-hand side
  • +
  • Click "Create", give the project a name and then "Create" again.
  • +
  • Once the dashboard loads, click on "ENABLE APIS AND SERVICES" in blue text.
  • +
  • Search for "Sheets" and click on "Google Sheets API" and then "ENABLE"
  • +
  • Click on "Credentials" on the left side of the page.
  • +
  • Select "Create credentials" and then "API Key"
  • +
+

Spreadsheet ID

+
    +
  • Go to your Google Sheets document and make sure it is accessible to anyone with the link, view-only.
  • +
  • The id is the part from your URL that comes after /d/. If the url is https://docs.google.com/spreadsheets/d/hjgt6sdBhbHdDssfjGk/edit?usp=sharing, your id is hjgt6sdBhbHdDssfjGk
  • +
+

Range

+ +

If the column that contains the Discord IDs is B and the IDs start from row 2 then the range value (don't touch it, if you don't know what you are doing)

+

How to setup a Discord bot

+

You will need a bot token, to generate one follow these steps:

-Go to https://discordapp.com/developers and login -Create an application and give it a name and a description -Select "Save Changes" at the bottom right and then navigate to the "Bot" section on the left-hand side. -There, create a bot user by clicking on "Add Bot". After confirming, reveal the token. -Invite the bot to your discord server: +
    +
  • Go to https://discordapp.com/developers and login
  • +
  • Create an application and give it a name and a description
  • +
  • Select "Save Changes" at the bottom right and then navigate to the "Bot" section on the left-hand side.
  • +
  • There, create a bot user by clicking on "Add Bot". After confirming, reveal the token.
  • +
+

Invite the bot to your discord server:

+
    +
  • Go to OAuth2 section of your developer application
  • +
  • Under SCOPES check bot
  • +
  • Under BOT PERMISSIONS check Manage Roles
  • +
  • Now go to the url generated in the SCOPES section and invite the bot to your server
  • +
  • Make sure the bot role is above the roles it has to assign
  • +
+

Configuration steps

+
    +
  • Install Node.JS
  • +
  • Download the latest bot version from the release tab and unzip it
  • +
  • Go to the config folder, copy and paste the config files
  • +
  • Open discord.json and complete your API key, your Spreadsheet id and Token (See How to get your Google details). All of these are strings, so make sure they are enclosed in quotation marks. (don't mess with empty arrays and variable such as usernamesp and roles)
  • -Go to OAuth2 section of your developer application -Under SCOPES check bot -Under BOT PERMISSIONS check Manage Roles -Now go to the url generated in the SCOPES section and invite the bot to your server -Make sure the bot role is above the roles it has to assign -Configuration steps -Install Node.JS -Download the latest bot version from the release tab and unzip it -Go to the config folder, copy and paste the two config files, and rename them by removing .example -Open google.json and complete your API key, your Spreadsheet id and your range (See How to get your Google details). All of these are strings, so make sure they are enclosed in quotation marks. -Open discord.json and complete your token and the role names that you want the bot to assign. The token is a string, so it must be enclosed in quotation marks. The roles property is an array, it holds all of the role names that will be assigned o the users found in the Google Sheet. If you only want to assign one role then it should look like this: ["Role name"]; otherwise ["First role name", "Second role name"] and so on, make sure to separate the names with a comma ( , ) -Go back to the root folder, open a terminal here and run these commands: npm install, wait for it to finish then run npm start. -Congratulations, if you did everything correctly you now have Form2Role bot running. +
  • Go back to the root folder, open a terminal here and run these commands: npm install, wait for it to finish then run npm start.
  • +
  • Run "npm install discord.js" , "npm install express" and "npm install request" (if required)
  • +
  • Congratulations, if you did everything correctly you now have Form2Role bot running.
  • +
+

More info

+
    +
  • The bot checks the sheet for new users and roles every minute. However you can change that in the code.
  • + +
  • The bot only supports upto 4 roles in column 2, 3, 4 ,5
  • -More info -The bot checks the sheet for new users every minute. However you can change that in the code. -Future updates will include mainly bug fixes. -Contributions are highly apreciated. +
  • Once you enter a "sexyusername#1111" in the spreadsheet, you can no longer control its roles from dicord. the bot will revert the roles back to the roles mentioned in the spreadsheet.
  • + + +
  • Future updates will include mainly bug fixes.
  • +
  • Contributions are highly apreciated.
  • +
From bbedf3f37f50d0f33454cce60321f53d03925ece Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Fri, 12 Jun 2020 22:58:53 +0500 Subject: [PATCH 05/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d705461..ac3aee0 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

More info

    -
  • The bot checks the sheet for new users and roles every minute. However you can change that in the code.
  • +
  • The bot checks the sheet for new users and roles every minute. However you can change that in the code. i.e refresh rate in discord.json. it is in miliseconds
  • The bot only supports upto 4 roles in column 2, 3, 4 ,5
  • From 4c1ba007925cca47b5a1cb0ef220d862392e3b19 Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:43:47 +0500 Subject: [PATCH 06/32] Updated added new functions --- index.js | 159 ++++++++++++++++++++----------------------------------- 1 file changed, 58 insertions(+), 101 deletions(-) diff --git a/index.js b/index.js index a8a90ec..800b576 100644 --- a/index.js +++ b/index.js @@ -5,8 +5,7 @@ var checked; var checking = []; const Discord = require("discord.js"); -const {token,usernamesp, roles, apiKey, spreadsheetId, range, refreshrate} = require("./config/discord.json"); -console.log(token+" "+usernamesp+" "+roles+" "+apiKey+" "+spreadsheetId+" "+range+" "+refreshrate) +const {usernameorid, token,usernamesp, roles, apiKey, spreadsheetId, range, unremoveableroles, refreshrate} = require("./config/discord.json"); const { google } = require("googleapis"); const connection = google.sheets({ @@ -68,7 +67,7 @@ const fetchRows = async (spreadsheetId, range, sheetsConnection) => { const therolenames = rows123[1]+","+rows123[2]+","+rows123[3]+","+rows123[4]; -console.log(rows123[0].trim()+" "+therolenames.trim()); + assignRoles(rows123[0].trim(), therolenames.trim()); @@ -110,9 +109,10 @@ const assignRoles = async (usernames, roleNames) => { const guildRoles = client.guilds.array()[0].roles.array(); - - + // deleting unremovable roles from the list + const Roles2 = guildRoles.filter(Role => !unremoveableroles.includes(Role.name)); // * getting Role instances of role names + const removedRoles = guildRoles.filter(Role => unremoveableroles.includes(Role.name)); const Roles = guildRoles.filter(Role => roleNames.includes(Role.name)); //role number of all members in the group @@ -121,16 +121,26 @@ const assignRoles = async (usernames, roleNames) => { // * getting GuildMember instances of usernames and setting roles guildMembers.forEach(async member => { + const username= member.user.username + "#" + member.user.discriminator; + + + //check if the first column of spreadsheet matches the userid/username of discord + +var UNcheck; - const username = member.user.username + "#" + member.user.discriminator; - - - - - + if (usernameorid=="UN"){ + UNcheck=username - if (usernames.includes(username)) { + }else{ + + UNcheck=member.id8 + + + } + + + if (usernames.includes(UNcheck)) { const notAssignedRoles = []; @@ -153,30 +163,40 @@ const assignRoles = async (usernames, roleNames) => { //Check whether the roles (discord) are in roles (spreadsheet) - - if (Roles.includes(member.roles.array()[1]) || member.roles.array()[1]==null){ - }else{checked="yes" } - if (Roles.includes(member.roles.array()[2]) || member.roles.array()[2]==null){ + + if (Roles.includes(member.roles.array()[1])|| removedRoles.includes(member.roles.array()[1])|| member.roles.array()[1]==null){ + + }else{checked="yes" } + if (Roles.includes(member.roles.array()[2]) || removedRoles.includes(member.roles.array()[2]) || member.roles.array()[2]==null){ + }else{checked="yes"; } - if (Roles.includes(member.roles.array()[3]) || member.roles.array()[3]==null){ + if (Roles.includes(member.roles.array()[3]) || removedRoles.includes(member.roles.array()[3])|| member.roles.array()[3]==null){ + }else{checked="yes"; } - if (Roles.includes(member.roles.array()[4]) || member.roles.array()[4]==null){ + if (Roles.includes(member.roles.array()[4])|| removedRoles.includes(member.roles.array()[4]) || member.roles.array()[4]==null){ + }else{checked="yes"; } //Check whether the roles (Spreadsheet) are in roles (Discord) - if (member.roles.array().includes(Roles[0]) || Roles[0]==null){ + if (member.roles.array().includes(Roles[0])|| removedRoles.includes(Roles[0]) || Roles[0]==null){ + }else{checked="yes"; } - if (member.roles.array().includes(Roles[1]) || Roles[1]==null){ + if (member.roles.array().includes(Roles[1]) || removedRoles.includes(Roles[1])|| Roles[1]==null){ + + }else{checked="yes"; } - if (member.roles.array().includes(Roles[2]) || Roles[2]==null){ + if (member.roles.array().includes(Roles[2]) || removedRoles.includes(Roles[2]) || Roles[2]==null){ + }else{checked="yes"; } - if (member.roles.array().includes(Roles[3]) || Roles[3]==null){ - }else{checked="yes"; } - - + if (member.roles.array().includes(Roles[3])|| removedRoles.includes(Roles[3]) || Roles[3]==null){ + + }else{checked="yes"; } + + + if (checked=="yes"){ notAssignedRoles.push(role); } @@ -185,98 +205,35 @@ const assignRoles = async (usernames, roleNames) => { if (notAssignedRoles.length > 0) { - await member.removeRoles(guildRoles); member.addRoles(Roles); - - console.log( - "Assigned " + - notAssignedRoles.map(role => role.name) + - " to " + - username + " on " + new Date().toString() - ); - } else { - - console.log(username + " already has all the roles assigned"); - } - } - }); - } catch (err) { - logError(err); - } -}; - - - -const assignRoles2 = async (usernames, roleNames,) => { - - - try { - const guildMembers = client.guilds.array()[0].members.array(); - - //number of all members in the group - - - const guildRoles = client.guilds.array()[0].roles.array(); - - - // * getting Role instances of role names - const Roles = guildRoles.filter(Role => roleNames.includes(Role.name)); - //role number of all members in the group - - - roleNames.length=0; - // * getting GuildMember instances of usernames and setting roles - guildMembers.forEach(async member => { - - const username = member.user.username + "#" + member.user.discriminator; - - - - - - - if (usernames.includes(username)) { - - const notAssignedRoles = []; - - - - - - - Roles.forEach(role => { - - //if (!member.roles.array().includes(Roles)) { - //if (!guildRoles.includes(Roles)) { + + await member.removeRoles(Roles2); member.addRoles(Roles); + - - - notAssignedRoles.push(role); - - - }); - if (notAssignedRoles.length > 0) { - - await member.removeRoles(guildRoles); - await member.addRoles(Roles); - var d = new Date().toString(); + console.log( "Assigned " + notAssignedRoles.map(role => role.name) + " to " + - username + " " + d + username + " ["+member.id+"] on " + new Date().toString() ); } else { - console.log(username + " already has all the roles assigned"); - } + if (Roles[0]==null && Roles[1]==null && Roles[2]==null && Roles[3]==null) { + member.removeRoles(Roles2); + console.log(username + " ["+member.id+"] has all roles removed on"+ new Date().toString()); + }else{ + + console.log(username + " ["+member.id+"] already has all the roles assigned, checked on "+ new Date().toString()); + } + } } }); } catch (err) { From f7e2f59387f73664abee5b9accac270dcdadc324 Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:46:43 +0500 Subject: [PATCH 07/32] Update discord.json updated functions --- config/discord.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/config/discord.json b/config/discord.json index fc5cb71..33b4fdd 100644 --- a/config/discord.json +++ b/config/discord.json @@ -4,7 +4,8 @@ "range":"A2:E", "spreadsheetId":"", "apiKey":"", - + "unremoveableroles":[""], + "usernameorid":"", "refreshrate":"60000", "roles": [], "usernamesp": [] From 7389c9c066480257dbcff38df143a8a98da2e2c8 Mon Sep 17 00:00:00 2001 From: supreen <62968684+supreen@users.noreply.github.com> Date: Sun, 28 Jun 2020 17:55:29 +0500 Subject: [PATCH 08/32] Update README.md updates added --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index ac3aee0..8676a54 100644 --- a/README.md +++ b/README.md @@ -69,3 +69,13 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Future updates will include mainly bug fixes.
  • Contributions are highly apreciated.
+ + +

New updates on 28/06/2020

+ +
  • Now the bot can detect userid instead of username. change the value of "usernameorid" in discord.json. i.e ["username":"UN"] for detecting username and ["username":"UI"] for detecting userid
  • +
  • We just realized that bot was throwing "missing permission" error when it was trying to remove unremovable roles. there now you can put unremoveable roles or the roles you dont want this bot to remove in "unremoveableroles" in discord.json. i.e "unremoveableroles":["bot","serverboost"]
  • +
  • The bot was doing nothing when all roles were removed, it detects and removes all roles now
  • +
  • Now it throws time in console when the bot assign or remove roles of a user
  • + + From 184483a599dafeccd60f7f283ad9134114754210 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Fri, 10 Jul 2020 15:59:08 +0500 Subject: [PATCH 09/32] Update index.js --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 800b576..37ad577 100644 --- a/index.js +++ b/index.js @@ -134,7 +134,7 @@ var UNcheck; }else{ - UNcheck=member.id8 + UNcheck=member.id } From 349c7254bd9f446169d22850432c3c28c7bcb0c2 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Fri, 13 Aug 2021 02:08:23 +0500 Subject: [PATCH 10/32] update --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8676a54..281e9aa 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,4 @@ Form2Role-Bot: -

    About

    This is the simplified version of talios0's and The24thDS's bot. The bot assigns the roles (according to the 2nd,3rd,4th and 5th column of the spreadsheet) to the usernames found in a 1st column of Google Sheet. Made possible by the amazing Discord.js library. Please note that the bot start detecting the data from 2nd row of spreadsheet.

    @@ -79,3 +78,5 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Now it throws time in console when the bot assign or remove roles of a user
  • +Consider buying me a coffee, if you liked my work. +https://www.buymeacoffee.com/suprin From 4f7e0682fc3d31a4a6004de601144cae7f3f63d0 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Fri, 13 Aug 2021 02:09:22 +0500 Subject: [PATCH 11/32] Create README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 281e9aa..208aad2 100644 --- a/README.md +++ b/README.md @@ -78,5 +78,5 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Now it throws time in console when the bot assign or remove roles of a user
  • -Consider buying me a coffee, if you liked my work. +Consider buying me a coffee, if you loved my work. https://www.buymeacoffee.com/suprin From 2f0d03b63a3608de91454876446d8992508984e2 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Fri, 27 May 2022 20:41:15 +0500 Subject: [PATCH 12/32] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 208aad2..a1ef68f 100644 --- a/README.md +++ b/README.md @@ -80,3 +80,6 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. < Consider buying me a coffee, if you loved my work. https://www.buymeacoffee.com/suprin + +If you are still finding it hard, Hire me +https://www.fiverr.com/supreen From 2d3302f85df4841fecc49895d29d7da095fda74a Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Fri, 27 May 2022 20:42:12 +0500 Subject: [PATCH 13/32] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index a1ef68f..6d46738 100644 --- a/README.md +++ b/README.md @@ -78,8 +78,8 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Now it throws time in console when the bot assign or remove roles of a user
  • -Consider buying me a coffee, if you loved my work. -https://www.buymeacoffee.com/suprin +

    Consider buying me a coffee, if you loved my work.

    +
  • https://www.buymeacoffee.com/suprin -If you are still finding it hard, Hire me -https://www.fiverr.com/supreen +

    If you are still finding it hard, Hire me

    +
  • https://www.fiverr.com/supreen From 1aedfbbaff66e7a3e443ffd9288eec5baa845c47 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:26:55 +0500 Subject: [PATCH 14/32] Update README.md updated readme text and link text. Pictures and exact links to be added in next commit --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 6d46738..e12ad1c 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,19 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Now it throws time in console when the bot assign or remove roles of a user
  • + +

    New Information updates on 22/06/2022

    +
  • Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json
  • +
  • You should manually give more permission to your bot roles as shown in the picture below
  • +
  • Your bot role much be higher than another role as shown in the picture below
  • + +

    New demo added on 22/06/2022

    +
  • Spreadsheet link:
  • +
  • Discord chaneel:
  • + +

    Free free to edit the roles preferable just checking and unchecking the roles. please be cautious, a wrong move can crash the bot.

    + +

    Consider buying me a coffee, if you loved my work.

  • https://www.buymeacoffee.com/suprin From 0e9f1a1b42814f87a20417fc875160474e67a6c0 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:31:18 +0500 Subject: [PATCH 15/32] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index e12ad1c..d289653 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,10 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

    New Information updates on 22/06/2022

  • Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json
  • You should manually give more permission to your bot roles as shown in the picture below
  • +![Image of Permission](https://github.com/supreen/form2role-bot/master/image/permission.JPG) +![Test Image 5
  • Your bot role much be higher than another role as shown in the picture below
  • +![Image of higher role](https://github.com/supreen/form2role-bot/master/image/highrole.JPG)

    New demo added on 22/06/2022

  • Spreadsheet link:
  • From 67f80b3237cac55ed3ce2e5f07d548c20e675907 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:32:04 +0500 Subject: [PATCH 16/32] adding images to the readme adding images to the readme --- Image/asd.jpg | 1 + 1 file changed, 1 insertion(+) create mode 100644 Image/asd.jpg diff --git a/Image/asd.jpg b/Image/asd.jpg new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Image/asd.jpg @@ -0,0 +1 @@ + From 8d22675a58821c050781beb839a322ff9ba45fcf Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:33:18 +0500 Subject: [PATCH 17/32] added image for readme --- Image/highrole.JPG | Bin 0 -> 27612 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Image/highrole.JPG diff --git a/Image/highrole.JPG b/Image/highrole.JPG new file mode 100644 index 0000000000000000000000000000000000000000..cf2afa2d868bd8f0ddbe4f341f11282775a9fc28 GIT binary patch literal 27612 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 z Date: Wed, 22 Jun 2022 15:35:19 +0500 Subject: [PATCH 18/32] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d289653..81821cc 100644 --- a/README.md +++ b/README.md @@ -83,8 +83,10 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json
  • You should manually give more permission to your bot roles as shown in the picture below
  • ![Image of Permission](https://github.com/supreen/form2role-bot/master/image/permission.JPG) -![Test Image 5 -
  • Your bot role much be higher than another role as shown in the picture below
  • +

    Your bot role much be higher than another role as shown in the picture below

    +
  • Right click on the server icon
  • +
  • Choose roles
  • +
  • drag the bot role above all roles
  • ![Image of higher role](https://github.com/supreen/form2role-bot/master/image/highrole.JPG)

    New demo added on 22/06/2022

    From 9e7006e4a097de8ba1899293f4b4f0057425a4b7 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:36:07 +0500 Subject: [PATCH 19/32] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 81821cc..398dcfb 100644 --- a/README.md +++ b/README.md @@ -82,12 +82,12 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

    New Information updates on 22/06/2022

  • Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json
  • You should manually give more permission to your bot roles as shown in the picture below
  • -![Image of Permission](https://github.com/supreen/form2role-bot/master/image/permission.JPG) +![Image of Permission](https://github.com/supreen/form2role-bot/master/image/permission.jpg)

    Your bot role much be higher than another role as shown in the picture below

  • Right click on the server icon
  • Choose roles
  • drag the bot role above all roles
  • -![Image of higher role](https://github.com/supreen/form2role-bot/master/image/highrole.JPG) +![Image of higher role](https://github.com/supreen/form2role-bot/master/image/highrole.jpg)

    New demo added on 22/06/2022

  • Spreadsheet link:
  • From 0b8578e5adcab010fe8bbb5ca7d634388fb952b0 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:36:52 +0500 Subject: [PATCH 20/32] Delete asd.jpg --- Image/asd.jpg | 1 - 1 file changed, 1 deletion(-) delete mode 100644 Image/asd.jpg diff --git a/Image/asd.jpg b/Image/asd.jpg deleted file mode 100644 index 8b13789..0000000 --- a/Image/asd.jpg +++ /dev/null @@ -1 +0,0 @@ - From a9e780bfefb8dfc2fcac3fe8d2b50d9a9fefb9a4 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:37:34 +0500 Subject: [PATCH 21/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 398dcfb..82c8d51 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Right click on the server icon
  • Choose roles
  • drag the bot role above all roles
  • -![Image of higher role](https://github.com/supreen/form2role-bot/master/image/highrole.jpg) +![Image of higher role](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG)

    New demo added on 22/06/2022

  • Spreadsheet link:
  • From c4624d2c42199dffe2e3c90796a8f38f7f51c936 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:38:46 +0500 Subject: [PATCH 22/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 82c8d51..b2cbb28 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Right click on the server icon
  • Choose roles
  • drag the bot role above all roles
  • -![Image of higher role](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG) +![Image of higher role]([https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG?raw=true))

    New demo added on 22/06/2022

  • Spreadsheet link:
  • From cee453ccd079af0948e393888528dfa378410278 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:40:10 +0500 Subject: [PATCH 23/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b2cbb28..8ae8787 100644 --- a/README.md +++ b/README.md @@ -87,7 +87,7 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • Right click on the server icon
  • Choose roles
  • drag the bot role above all roles
  • -![Image of higher role]([https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG?raw=true)) +![Image of higher role](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG?raw=true)

    New demo added on 22/06/2022

  • Spreadsheet link:
  • From fb094dc6d0a188d379c34c0a4a4caba2caac9abc Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:41:52 +0500 Subject: [PATCH 24/32] added image for readme --- Image/permission.jpg | Bin 0 -> 64865 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 Image/permission.jpg diff --git a/Image/permission.jpg b/Image/permission.jpg new file mode 100644 index 0000000000000000000000000000000000000000..78468e6e2a9f550d3dfb9bbb1e762fc3da28859b GIT binary patch literal 64865 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 literal 0 HcmV?d00001 From 31c53d101569a06f703c4e36f2766cd34b3d5302 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:42:42 +0500 Subject: [PATCH 25/32] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8ae8787..9447ba4 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

    New Information updates on 22/06/2022

  • Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json
  • You should manually give more permission to your bot roles as shown in the picture below
  • -![Image of Permission](https://github.com/supreen/form2role-bot/master/image/permission.jpg) +![Image of Permission](https://github.com/supreen/form2role-bot/blob/master/Image/permission.jpg?raw=true)

    Your bot role much be higher than another role as shown in the picture below

  • Right click on the server icon
  • Choose roles
  • From d1359f44630c7ec81c6fa950e6f0a4282a877cf9 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:47:19 +0500 Subject: [PATCH 26/32] Updated further details and images --- README.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 9447ba4..18f67b2 100644 --- a/README.md +++ b/README.md @@ -79,13 +79,23 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. < -

    New Information updates on 22/06/2022

    -
  • Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json
  • -
  • You should manually give more permission to your bot roles as shown in the picture below
  • +

    New Information updates on 22/06/2022

    +
    +

    Always add "@everyone" and other unremovable roles in unremovable roles under config/discord.json

    +
    +

    You should manually give more permission to your bot roles as shown in the picture below

    +
  • Right click on the server "icon"
  • +
  • Click on "Server Setting" from drop menu"
  • Click "Roles" from the drop menu of "server settings +
  • Click "Roles" menu click on the "role" assigned to your bot
  • +
  • Click "Roles" menu click on the "role" assigned to your bot
  • +
  • Go to "Permissions" Tab and give all permissions to your bot
  • ![Image of Permission](https://github.com/supreen/form2role-bot/blob/master/Image/permission.jpg?raw=true) -

    Your bot role much be higher than another role as shown in the picture below

    -
  • Right click on the server icon
  • -
  • Choose roles
  • +
    +

    Your bot role much be higher than another role as shown in the picture below

    +
  • Right click on the server "icon"
  • +
  • Click on "Server Setting" from drop menu"
  • Click "Roles" from the drop menu of "server settings
  • drag the bot role above all roles
  • ![Image of higher role](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG?raw=true) From 5b0ba5cfd6b0bb7ab1da6f9c1ce987b1c460275b Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 15:57:27 +0500 Subject: [PATCH 27/32] Update README.md --- README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 18f67b2..92289f0 100644 --- a/README.md +++ b/README.md @@ -85,20 +85,21 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

    You should manually give more permission to your bot roles as shown in the picture below

  • Right click on the server "icon"
  • -
  • Click on "Server Setting" from drop menu"
  • Click on "Server Setting" from drop menu"
  • Click "Roles" from the drop menu of "server settings
  • Click "Roles" menu click on the "role" assigned to your bot
  • Click "Roles" menu click on the "role" assigned to your bot
  • -
  • Go to "Permissions" Tab and give all permissions to your bot
  • +
  • Go to "Permissions" Tab and give all permissions to your bot
  • + ![Image of Permission](https://github.com/supreen/form2role-bot/blob/master/Image/permission.jpg?raw=true)

    Your bot role much be higher than another role as shown in the picture below

  • Right click on the server "icon"
  • -
  • Click on "Server Setting" from drop menu"
  • Click on "Server Setting" from drop menu"
  • Click "Roles" from the drop menu of "server settings
  • drag the bot role above all roles
  • ![Image of higher role](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG?raw=true) - +

    New demo added on 22/06/2022

  • Spreadsheet link:
  • Discord chaneel:
  • From 25803b0112a3060942bb5b90a81135b6f727c559 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 16:00:22 +0500 Subject: [PATCH 28/32] added spreadsheet link --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 92289f0..28d0cbc 100644 --- a/README.md +++ b/README.md @@ -100,12 +100,15 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • drag the bot role above all roles
  • ![Image of higher role](https://github.com/supreen/form2role-bot/blob/master/Image/highrole.JPG?raw=true)
    + +

    New demo added on 22/06/2022

    -
  • Spreadsheet link:
  • +
  • Spreadsheet link:https://docs.google.com/spreadsheets/d/1p1GiIqUUy2b-HcsaCJFHu_ZYQ2nWKZ2zGXmEmu9RrNE/edit#gid=0
  • Discord chaneel:
  • - +

    Free free to edit the roles preferable just checking and unchecking the roles. please be cautious, a wrong move can crash the bot.

    - + +

    Consider buying me a coffee, if you loved my work.

  • https://www.buymeacoffee.com/suprin From c2df8d08e9df2661adb5d8e2e62a5e1f3e4650f7 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 16:04:27 +0500 Subject: [PATCH 29/32] added demo link added demo link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 28d0cbc..c1952c8 100644 --- a/README.md +++ b/README.md @@ -104,7 +104,7 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

    New demo added on 22/06/2022

  • Spreadsheet link:https://docs.google.com/spreadsheets/d/1p1GiIqUUy2b-HcsaCJFHu_ZYQ2nWKZ2zGXmEmu9RrNE/edit#gid=0
  • -
  • Discord chaneel:
  • +
  • Discord chaneel: https://discord.com/channels/715245634218885131/715245634898100256
  • Free free to edit the roles preferable just checking and unchecking the roles. please be cautious, a wrong move can crash the bot.

    From 7de22dbb6d48938e9c78f58f3f2032eadef10250 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Wed, 22 Jun 2022 16:07:11 +0500 Subject: [PATCH 30/32] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index c1952c8..3d5dc28 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,8 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <

    Did you ever want to add some kind of authentication to your Discord server? Maybe you want only people with a certain email domain to have access to some channels. Use a form to collect the required data and then set up this bot to automatically assign roles to everyone found in the Google Sheet.

    Required fields

    -

    The only field that you must have in your Google Form and Google Sheet is the DiscordID. Your DiscordID it's made up of your username and the discriminator, and it looks like this: SomeSexyUsername#4565. The bot needs it to identify users and assign roles to them.

    +

    The only field that you must have in your Google Form and Google Sheet is the DiscordID. Your DiscordID it's made up of your username and the discriminator, and it looks like this: SomeSexyUsername#4565. The bot needs it to identify users and assign roles to them.(When you selected "UN" in discord.config)

    +

    With new update, now you can also add USERID which is unique id and can be found by right clicking on the username and clicking on "COPY ID" it will be something like "696051693519503421" (When you selected "UI" in discord.config).

    How to get your Google details

    API key

    From 009c4d9dc4a5e9adb7d0cb6defff09558ec923ec Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Tue, 13 Jun 2023 19:15:48 +0500 Subject: [PATCH 31/32] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 3d5dc28..36d0575 100644 --- a/README.md +++ b/README.md @@ -115,4 +115,10 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • https://www.buymeacoffee.com/suprin

    If you are still finding it hard, Hire me

    +
  • https://sobdar.com/order (you get 30% off here and you can also put your query there)
  • https://www.fiverr.com/supreen + +

    For more contact please visit: +
  • https://sobdar.com/wa (Whatsapp) +
  • https://sobdar.com/fbmsg (Messenger) +
  • https://sobdar.com/fb (fbpage) From 696aa9f658adcc13908caa5575dbae11b3102653 Mon Sep 17 00:00:00 2001 From: Suprin Aziz <62968684+supreen@users.noreply.github.com> Date: Tue, 13 Jun 2023 19:17:03 +0500 Subject: [PATCH 32/32] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 36d0575..c63b62c 100644 --- a/README.md +++ b/README.md @@ -118,7 +118,8 @@ Please note that the bot start detecting the data from 2nd row of spreadsheet. <
  • https://sobdar.com/order (you get 30% off here and you can also put your query there)
  • https://www.fiverr.com/supreen -

    For more contact please visit: +

    For more contact please visit:

    +

  • https://sobdar.com/ (Official Website)
  • https://sobdar.com/wa (Whatsapp)
  • https://sobdar.com/fbmsg (Messenger) -
  • https://sobdar.com/fb (fbpage) +
  • https://sobdar.com/fb (fbpage)