async def email_cmd(self, ctx): berlin_tz = tz('Europe/Berlin' ) # <-- change this as well to your timezone if needed! idx = 1 userId = str(123456789) # <-- change this to your discord-id ! mails = await self.Mango.fetchNewEMails() mails_num = len(mails) em = Embed(title="New Mails Summary", colour=Colour.blurple(), timestamp=dt.now(tz=berlin_tz)) em.description = f"You have {mails_num} new Mails." await ctx.send(f"<@{userId}>") await ctx.send(embed=em) if mails_num == 0: return for mail_ in mails: mailEmbed = Embed(title=f"Mail {idx} of {mails_num}", colour=Colour.dark_teal(), timestamp=dt.now(tz=berlin_tz)) mailEmbed.add_field(name='Sender', value=f'{mail_.mail}', inline=False) mailEmbed.add_field(name='Subject', value=f'{mail_.subject}', inline=False) mailEmbed.add_field(name='Message', value=f'{mail_.message}', inline=False) mailEmbed.add_field(name='Date', value=f'{berlin_tz.fromutc(mail_.date)}', inline=False) await ctx.send(embed=mailEmbed) idx = idx + 1 await self.run_purger() return
async def dice(ctx, *, sides): """ !dice <n> - rolls an n-sided dice """ if get_value(sides): embed = Embed() embed.type = "rich" embed.color = Colour.dark_teal() embed.add_field(name=":game_die::wave: {} rolled and got".format( ctx.message.author.display_name), value=get_value(sides)) await bot.say(None, embed=embed)
async def ud(self, ctx, *args, member: discord.Member = None): member = member or ctx.author url = self.BASE_URL + urllib.parse.urlencode({'term': ' '.join(args)}) request = urllib.request.urlopen(url) data = json.load(request) data = data['list'] if len(data) > 0: counter = 0 embed = discord.Embed(description=data[counter]['definition'], colour=Colour.dark_teal()) embed.set_author(name=data[counter]['word']) embed.set_footer(text=f'{counter+1} / {len(data)}') sent_msg = await ctx.message.channel.send(embed=embed) if len(data) > 1: await sent_msg.add_reaction('⬅️') await sent_msg.add_reaction('➡️') def check(reaction, user): return user == ctx.message.author and reaction.message.id == sent_msg.id and reaction.emoji in ['⬅️', '➡️'] try: while True: reaction, user = await self.bot.wait_for('reaction_add', timeout=15.0, check=check) if reaction.emoji == '⬅️': if counter-1 >= min(0, len(data)): counter -= 1 embed.description = data[counter]['definition'] embed.set_footer(text=f'{counter+1} / {len(data)}') await sent_msg.edit(embed=embed) elif reaction.emoji == '➡️': if counter+1 < min(10, len(data)): counter += 1 embed.description = data[counter]['definition'] embed.set_footer(text=f'{counter+1} / {len(data)}') await sent_msg.edit(embed=embed) for r in reaction.message.reactions: async for usr in r.users(): if not usr.bot: await r.remove(usr) except asyncio.TimeoutError: await sent_msg.clear_reaction('⬅️') await sent_msg.clear_reaction('➡️') else: embed = discord.Embed(description=f"**{member.name}#{member.discriminator}** Couldn't find definition for that term.", colour=Colour.from_rgb(238, 38, 32)) await ctx.message.channel.send(embed=embed)
async def togglerole(self, ctx, keyword=""): """ Toggle some opt-in roles """ user = ctx.message.author keyword = keyword.lower() try: with open("database/roles.json") as f: js = load(f) except FileNotFoundError: js = {} try: rolename = js[keyword]["role"] role = get(ctx.message.guild.roles, name=rolename) if role in user.roles: await user.remove_roles(role) await ctx.send("Left {}".format(rolename)) return await user.add_roles(role) await ctx.send("Joined {}".format(rolename)) except KeyError: if keyword == "": embed = Embed(title="List of toggleable roles:", colour=Colour.dark_teal()) embed.description = "" for k in js: embed.description += "- {} {}: `{}`\n".format( js[k]["emoji"], js[k]["description"], k) await ctx.send("", embed=embed) return await ctx.send("This role is not in the database!")
from discord import Colour from random import seed, randint from datetime import datetime seed(datetime.now()) colours = [ Colour.teal(), Colour.dark_teal(), Colour.green(), Colour.dark_green(), Colour.blue(), Colour.dark_blue(), Colour.purple(), Colour.dark_purple(), Colour.magenta(), Colour.dark_magenta(), Colour.gold(), Colour.dark_gold(), Colour.orange(), Colour.dark_orange(), Colour.red(), Colour.dark_red(), Colour.lighter_grey(), Colour.light_grey(), Colour.dark_grey(), Colour.darker_grey(), Colour.blurple(), Colour.greyple(), Colour.from_rgb(randint(0, 255), randint(0, 255), randint(0, 255)) ]
async def on_message(self, message, **kwargs): assert isinstance(message, Message) client = self.client prefix = kwargs.get("prefix") if not is_valid_command(message.content, valid_commands, prefix=prefix): return else: self.stats.add(MESSAGE) def startswith(*args): for a in args: if message.content.startswith(a): return True return False if startswith(prefix + "osu"): username = message.content[len(prefix + "osu "):] t_start = time.time() user = self.osu.get_user(username) if not user: await client.send_message(message.channel, "User does not exist.") return # About inverting: this inverts the number before and after the splitting def prepare(this): if not type(this) in (float, int): return None return invert_str(",".join( split_every(str(invert_num(this)), 3))) global_rank = prepare(user.world_rank) country_rank = prepare(user.country_rank) total_score = prepare(user.total_score) ranked_score = prepare(user.ranked_score) try: acc = str(round(float(user.accuracy), 2)) + " %" except TypeError: await client.send_message(message.channel, ":warning: Something went wrong...") return pp_amount = str(int(float(user.pp))) osu_level = int(float(user.level)) avatar_url = "http://a.ppy.sh/{}".format(user.id) # Color is determined by the level range if osu_level < 10: color = Colour.darker_grey() elif osu_level < 25: color = Colour.light_grey() elif osu_level < 40: color = Colour.dark_teal() elif osu_level < 50: color = Colour.teal() elif osu_level < 75: color = Colour.dark_purple() elif osu_level < 100: color = Colour.purple() # Only the masters get the gold ;) else: color = Colour.gold() desc = "**Level**: {}\n**Rank**: \n\t" \ "**Global**: #{}\n\t" \ "**Country** (**{}**): #{}\n" \ "Total PP: **{}**".format(osu_level, global_rank, user.country, country_rank, pp_amount) embed = Embed(url=user.profile_url, description=desc, colour=color) embed.set_author(name=user.name) embed.set_thumbnail(url=avatar_url) embed.add_field(name="Total score", value=total_score) embed.add_field(name="Ranked score", value=ranked_score) embed.add_field(name="Average accuracy", value=acc) delta = int((time.time() - t_start) * 1000) embed.set_footer(text="Search took {} ms".format(delta)) try: await client.send_message(message.channel, embed=embed) except errors.HTTPException: await client.send_message( message.channel, "Something went wrong " + StandardEmoji.THINKING)