## Changelog | ## 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 | #### v1.1.2 | ||||
###### Bug Fixes | ###### Bug Fixes | ||||
- Fixed a bug when a user only the '@everyone' role. | - Fixed a bug when a user only the '@everyone' role. |
def is_nfsw_enabled(): | def is_nfsw_enabled(): | ||||
return commands.check(lambda ctx: ServerConfig().load_config()[ctx.message.server.id]["nsfw"]["enabled"] == 1) | 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") |
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)) |
The same but the opposite | The same but the opposite | ||||
""" | """ | ||||
self.con.load_config() | self.con.load_config() | ||||
channel = self.servers[member.server.id]["goodbyes"]["goodbye-channel"] | |||||
if not self.servers[member.server.id]["goodbyes"]["enabled"]: | if not self.servers[member.server.id]["goodbyes"]["enabled"]: | ||||
return | return | ||||
else: | 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)) | description="{}#{} has left or been beaned.".format(member.name, member.discriminator), colour=0xDEADBF)) | ||||
def setup(Bot): | def setup(Bot): | ||||
Bot.add_cog(JoinLeave(Bot)) | Bot.add_cog(JoinLeave(Bot)) |
@bot.command(pass_context=True) | @bot.command(pass_context=True) | ||||
async def traa(self, ctx): | |||||
async def gss(self, ctx): | |||||
""" | """ | ||||
Gives you the best trans memes ever | Gives you the best trans memes ever | ||||
""" | """ | ||||
subreddit = "traaaaaaannnnnnnnnns" | |||||
subreddit = "gaysoundsshitposts" | |||||
links = Scrapper().linkget(subreddit, True) | links = Scrapper().linkget(subreddit, True) | ||||
if not links: | if not links: | ||||
return await self.bot.say("Error ;-; That subreddit probably doesn't exist. Please check your spelling") | return await self.bot.say("Error ;-; That subreddit probably doesn't exist. Please check your spelling") |
self.con.update_config(self.servers) | self.con.update_config(self.servers) | ||||
return await self.bot.say("Custom message set to '{}'".format(message)) | 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): | async def muterole(self, ctx, role: discord.Role = None): | ||||
self.servers = self.con.load_config() | self.servers = self.con.load_config() | ||||
self.servers[ctx.message.server.id]["mute"]["role"] = role.id | self.servers[ctx.message.server.id]["mute"]["role"] = role.id | ||||
self.con.update_config(self.servers) | self.con.update_config(self.servers) | ||||
return await self.bot.say("Muted role set to '{}'".format(role.name)) | 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) | @group(pass_context=True) | ||||
@checks.is_owner_or_admin() | @checks.is_owner_or_admin() | ||||
async def add(self, ctx): | async def add(self, ctx): |
"cogs.selfassign", | "cogs.selfassign", | ||||
"cogs.settings", | "cogs.settings", | ||||
"cogs.twitch", | "cogs.twitch", | ||||
"cogs.util" | |||||
"cogs.util", | |||||
"cogs.gss" | |||||
] | ] |
[Github link](https://github.com/RainbowDinoaur/roxbot) | [Github link](https://github.com/RainbowDinoaur/roxbot) | ||||
[Changelog](https://github.com/RainbowDinoaur/roxbot#v100)""" | [Changelog](https://github.com/RainbowDinoaur/roxbot#v100)""" | ||||
__author__ = "Roxanne Gibson" | __author__ = "Roxanne Gibson" | ||||
__version__= "1.1.2" | |||||
__version__= "1.2.2" | |||||
embedcolour = 0xDEADBF | embedcolour = 0xDEADBF |
"custom_commands":{ | "custom_commands":{ | ||||
"0": {}, | "0": {}, | ||||
"1": {} | "1": {} | ||||
}, | |||||
"gss":{ | |||||
"log_channel": "", | |||||
"required_days": "", | |||||
"required_score": "", | |||||
} | } | ||||
} | } | ||||
} | } |
{"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": ""}}} |
command_prefix = settings["Roxbot"]["Command_Prefix"] | command_prefix = settings["Roxbot"]["Command_Prefix"] | ||||
token = settings["Roxbot"]["Token"] | token = settings["Roxbot"]["Token"] | ||||
owner = settings["Roxbot"]["OwnerID"] | |||||
owner = settings["Roxbot"]["OwnerID"] | |||||
tattoken = settings["Roxbot"]["Tatsumaki_Token"] |
command_prefix = settings.command_prefix | command_prefix = settings.command_prefix | ||||
token = settings.token | token = settings.token | ||||
owner = settings.owner | owner = settings.owner | ||||
tat_token = settings.tattoken | |||||
cogslist = cogs.cogs | cogslist = cogs.cogs | ||||
description = meta.__description__ | description = meta.__description__ | ||||
version = meta.__version__ | version = meta.__version__ | ||||
author = meta.__author__ | author = meta.__author__ | ||||
embedcolour = meta.embedcolour | embedcolour = meta.embedcolour | ||||
server_config = ServerConfig() | server_config = ServerConfig() | ||||
bot = commands.Bot(command_prefix=load_config.command_prefix, description=load_config.description) | 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 | 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. | # 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. | # Can't do this with server config in any meaningful way since it still needs updating. |
[Roxbot] | [Roxbot] | ||||
OwnerID=142735312626515979 | OwnerID=142735312626515979 | ||||
Token=TokenHere | Token=TokenHere | ||||
Command_Prefix=r; | |||||
Command_Prefix=r; | |||||
Tatsumaki_Token=TokenHere |