@@ -11,6 +11,14 @@ A simple Discord Bot used by me personally, written for fun. | |||
## Changelog | |||
#### v1.2.0 | |||
###### New Features | |||
- Added a new cog for the GaySoundsShiposts discord. Just some custom commands needed for modding. | |||
#### v1.1.3 | |||
###### Changes | |||
- Changed to traa command to gss and point to the /r/gaysoundsshitposts subreddit | |||
#### v1.1.2 | |||
###### Bug Fixes | |||
- Fixed a bug when a user only the '@everyone' role. |
@@ -19,3 +19,5 @@ def is_owner_or_admin(): | |||
def is_nfsw_enabled(): | |||
return commands.check(lambda ctx: ServerConfig().load_config()[ctx.message.server.id]["nsfw"]["enabled"] == 1) | |||
def is_gss(): | |||
return commands.check(lambda ctx: ctx.message.server.id == "393764974444675073") |
@@ -0,0 +1,92 @@ | |||
import checks | |||
import datetime | |||
import requests | |||
import load_config | |||
from discord.ext.commands import bot | |||
from config.server_config import ServerConfig | |||
class GaySoundsShitposting(): | |||
def __init__(self, Bot): | |||
self.bot = Bot | |||
self.con = ServerConfig() | |||
self.servers = self.con.servers | |||
@checks.is_gss() | |||
@bot.command(pass_context=True) | |||
async def selfieperms(self, ctx): | |||
"""Requests the selfie perm role.""" | |||
member = ctx.message.author | |||
server = ctx.message.server | |||
set_role = "394939389823811584" | |||
role_obj = None | |||
required_score = int(self.servers[server.id]["gss"]["required_score"]) | |||
days = int(self.servers[server.id]["gss"]["required_days"]) | |||
logging = self.servers[server.id]["gss"]["log_channel"] | |||
for role in server.roles: | |||
if role.id == set_role: | |||
role_obj = role | |||
if role_obj in member.roles: | |||
return await self.bot.say("You already have the {} role.".format(role_obj.name)) | |||
base = "https://api.tatsumaki.xyz/" | |||
url = base + "guilds/" + server.id + "/members/" + member.id + "/stats" | |||
r = requests.get(url,headers={"Authorization":load_config.tat_token}) | |||
data = r.json() | |||
time = datetime.datetime.now() - ctx.message.author.joined_at | |||
if time > datetime.timedelta(days=days) and int(data["score"]) >= required_score: | |||
await self.bot.add_roles(member, role_obj) | |||
await self.bot.say("You have now got the {} role".format(role_obj.name)) | |||
if logging: | |||
return await self.bot.send_message(self.bot.get_channel(logging), content="{} has requested the {} role.".format(member.mention, role_obj.name)) | |||
else: | |||
return await self.bot.say( | |||
"You do not meet the requirements for this role. You need at least {} score with <@!172002275412279296> and to have been in the server for {} days.".format(required_score, days) | |||
) | |||
@checks.is_gss() | |||
@bot.command(pass_context=True) | |||
async def nsfwperms(self, ctx): | |||
"""Requests the NSFW Image Perm role.""" | |||
member = ctx.message.author | |||
server = ctx.message.server | |||
set_role = "394941004043649036" | |||
role_obj = None | |||
required_score = int(self.servers[server.id]["gss"]["required_score"]) | |||
days = int(self.servers[server.id]["gss"]["required_days"]) | |||
logging = self.servers[server.id]["gss"]["log_channel"] | |||
for role in server.roles: | |||
if role.id == set_role: | |||
role_obj = role | |||
if role_obj in member.roles: | |||
return await self.bot.say("You already have the {} role.".format(role_obj.name)) | |||
base = "https://api.tatsumaki.xyz/" | |||
url = base + "guilds/" + server.id + "/members/" + member.id + "/stats" | |||
r = requests.get(url,headers={"Authorization":load_config.tat_token}) | |||
data = r.json() | |||
time = datetime.datetime.now() - ctx.message.author.joined_at | |||
if time > datetime.timedelta(days=days) and int(data["score"]) >= required_score: | |||
await self.bot.add_roles(member, role_obj) | |||
await self.bot.say("You have now got the {} role".format(role_obj.name)) | |||
if logging: | |||
return await self.bot.send_message(self.bot.get_channel(logging), content="{} has requested the {} role.".format(member.mention, role_obj.name)) | |||
else: | |||
return await self.bot.say( | |||
"You do not meet the requirements for this role. You need at least {} score with <@!172002275412279296> and to have been in the server for {} days.".format(required_score, days) | |||
) | |||
def setup(Bot): | |||
Bot.add_cog(GaySoundsShitposting(Bot)) |
@@ -37,11 +37,13 @@ class JoinLeave(): | |||
The same but the opposite | |||
""" | |||
self.con.load_config() | |||
channel = self.servers[member.server.id]["goodbyes"]["goodbye-channel"] | |||
if not self.servers[member.server.id]["goodbyes"]["enabled"]: | |||
return | |||
else: | |||
return await self.bot.send_message(member.server,embed=discord.Embed( | |||
return await self.bot.send_message(self.bot.get_channel(channel) ,embed=discord.Embed( | |||
description="{}#{} has left or been beaned.".format(member.name, member.discriminator), colour=0xDEADBF)) | |||
def setup(Bot): | |||
Bot.add_cog(JoinLeave(Bot)) |
@@ -247,11 +247,11 @@ class Reddit(): | |||
@bot.command(pass_context=True) | |||
async def traa(self, ctx): | |||
async def gss(self, ctx): | |||
""" | |||
Gives you the best trans memes ever | |||
""" | |||
subreddit = "traaaaaaannnnnnnnnns" | |||
subreddit = "gaysoundsshitposts" | |||
links = Scrapper().linkget(subreddit, True) | |||
if not links: | |||
return await self.bot.say("Error ;-; That subreddit probably doesn't exist. Please check your spelling") |
@@ -144,13 +144,34 @@ class Settings(): | |||
self.con.update_config(self.servers) | |||
return await self.bot.say("Custom message set to '{}'".format(message)) | |||
@set.command(pass_context=True, hidden=True, enabled=False) | |||
@set.command(pass_context=True, hidden=True) | |||
async def muterole(self, ctx, role: discord.Role = None): | |||
self.servers = self.con.load_config() | |||
self.servers[ctx.message.server.id]["mute"]["role"] = role.id | |||
self.con.update_config(self.servers) | |||
return await self.bot.say("Muted role set to '{}'".format(role.name)) | |||
@set.command(pass_context=True, hidden=True) | |||
async def loggingchannel(self, ctx, channel: discord.Channel = None): | |||
self.servers = self.con.load_config() | |||
self.servers[ctx.message.server.id]["gss"]["logging_channel"] = channel.id | |||
self.con.update_config(self.servers) | |||
return await self.bot.say("Logging Channel set to '{}'".format(channel.name)) | |||
@set.command(pass_context=True, hidden=True) | |||
async def requireddays(self, ctx, days: int): | |||
self.servers = self.con.load_config() | |||
self.servers[ctx.message.server.id]["gss"]["required_days"] = str(days) | |||
self.con.update_config(self.servers) | |||
return await self.bot.say("Required days set to '{}'".format(str(days))) | |||
@set.command(pass_context=True, hidden=True) | |||
async def requiredscore(self, ctx, score: int): | |||
self.servers = self.con.load_config() | |||
self.servers[ctx.message.server.id]["gss"]["required_score"] = str(score) | |||
self.con.update_config(self.servers) | |||
return await self.bot.say("Required score set to '{}'".format(str(score))) | |||
@group(pass_context=True) | |||
@checks.is_owner_or_admin() | |||
async def add(self, ctx): |
@@ -7,5 +7,6 @@ cogs = [ | |||
"cogs.selfassign", | |||
"cogs.settings", | |||
"cogs.twitch", | |||
"cogs.util" | |||
"cogs.util", | |||
"cogs.gss" | |||
] |
@@ -3,5 +3,5 @@ __description__ = """RoxBot, A Discord Bot made by a filthy Mercy Main. Built wi | |||
[Github link](https://github.com/RainbowDinoaur/roxbot) | |||
[Changelog](https://github.com/RainbowDinoaur/roxbot#v100)""" | |||
__author__ = "Roxanne Gibson" | |||
__version__= "1.1.2" | |||
__version__= "1.2.2" | |||
embedcolour = 0xDEADBF |
@@ -41,6 +41,11 @@ class ServerConfig(): | |||
"custom_commands":{ | |||
"0": {}, | |||
"1": {} | |||
}, | |||
"gss":{ | |||
"log_channel": "", | |||
"required_days": "", | |||
"required_score": "", | |||
} | |||
} | |||
} |
@@ -1 +1 @@ | |||
{"304048071963312130": {"greets": {"enabled": 0, "welcome-channel": "", "member-role": "", "custom-message": "hellow", "default-message": "Be sure to read the rules."}, "goodbyes": {"enabled": 0, "goodbye-channel": ""}, "self_assign": {"enabled": 0, "roles": []}, "twitch": {"enabled": 0, "twitch-channel": "", "whitelist": {"enabled": 0, "list": []}}, "mute": {"role": "", "admin-role": []}, "nsfw": {"enabled": 0}, "admin_role": {"role": ""}, "custom_commands": {"0": {"test": "\"testedit\"", "hello": "<:tingles:346838411639914506>", "benis": "\ud83c\udd71enis", "sophie": "<@136619052994002944>", "myra": "<@342213251372941312>", "roxieee": "<@!142735312626515979>", "customs": "\"\ud83d\udec3\"", "zzz": "\ud83d\udca4", "lewd!": "\ud83d\udea8 lewd! \ud83d\udea8"}, "1": {}}, "perm_roles": {"admin": [], "mod": []}}} | |||
{"304048071963312130": {"greets": {"enabled": 0, "welcome-channel": "", "member-role": "", "custom-message": "hellow", "default-message": "Be sure to read the rules."}, "goodbyes": {"enabled": 0, "goodbye-channel": ""}, "self_assign": {"enabled": 0, "roles": []}, "twitch": {"enabled": 0, "twitch-channel": "", "whitelist": {"enabled": 0, "list": []}}, "mute": {"role": "", "admin-role": []}, "nsfw": {"enabled": 0}, "admin_role": {"role": ""}, "custom_commands": {"0": {"test": "\"testedit\"", "hello": "<:tingles:346838411639914506>", "benis": "\ud83c\udd71enis", "sophie": "<@136619052994002944>", "myra": "<@342213251372941312>", "roxieee": "<@!142735312626515979>", "customs": "\"\ud83d\udec3\"", "zzz": "\ud83d\udca4", "lewd!": "\ud83d\udea8 lewd! \ud83d\udea8"}, "1": {}}, "perm_roles": {"admin": [], "mod": []}, "gss": {"logging_channel": "339201847678074880", "required_days": "5", "required_score": "3000000", "log_channel": ""}}} |
@@ -5,4 +5,5 @@ settings.read("settings/preferences.ini") | |||
command_prefix = settings["Roxbot"]["Command_Prefix"] | |||
token = settings["Roxbot"]["Token"] | |||
owner = settings["Roxbot"]["OwnerID"] | |||
owner = settings["Roxbot"]["OwnerID"] | |||
tattoken = settings["Roxbot"]["Tatsumaki_Token"] |
@@ -3,8 +3,10 @@ from config import settings, cogs, meta | |||
command_prefix = settings.command_prefix | |||
token = settings.token | |||
owner = settings.owner | |||
tat_token = settings.tattoken | |||
cogslist = cogs.cogs | |||
description = meta.__description__ | |||
version = meta.__version__ | |||
author = meta.__author__ | |||
embedcolour = meta.embedcolour | |||
@@ -23,7 +23,7 @@ logger.addHandler(handler) | |||
server_config = ServerConfig() | |||
bot = commands.Bot(command_prefix=load_config.command_prefix, description=load_config.description) | |||
bot.dev = False # For debugging | |||
bot.dev = True # For debugging | |||
bot.owner = load_config.owner | |||
# TODO: Put load_config variables into the bot variable so we can pass all of it to the cogs as one. | |||
# Can't do this with server config in any meaningful way since it still needs updating. |
@@ -1,4 +1,5 @@ | |||
[Roxbot] | |||
OwnerID=142735312626515979 | |||
Token=TokenHere | |||
Command_Prefix=r; | |||
Command_Prefix=r; | |||
Tatsumaki_Token=TokenHere |