Exemple #1
0
 async def attempt_delivery(self, location, package):
     try:
         if location is None:
             return False
         if package.guild_id is None:
             jumplink_available = "Unavailable"
         else:
             jumplink_available = MessageUtils.construct_jumplink(package.guild_id, package.channel_id, package.message_id)
         mode = "dm" if isinstance(location, User) else "channel"
         now = datetime.utcfromtimestamp(time.time())
         send_time = datetime.utcfromtimestamp(package.send.timestamp())
         parts = {
             "date": send_time.strftime('%c'),
             "timediff": server_info.time_difference(now, send_time, None if isinstance(location, User) else location.guild.id),
             "now_date": now.strftime('%c'),
             "jump_link": jumplink_available,
             "recipient": None if isinstance(location, User) else (await Utils.get_user(package.user_id)).mention
         }
         parcel = Translator.translate(f"reminder_delivery_{mode}", None if isinstance(location, User) else location, **parts)
         content = f"```\n{package.to_remind}\n```"
         try:
             if len(parcel) + len(content) < 2000:
                 await location.send(parcel + content)
             else:
                 await location.send(parcel)
                 await location.send(content)
         except (Forbidden, NotFound):
             return False
         else:
             return True
     except Exception as ex:
         await TheRealGearBot.handle_exception("Reminder delivery", self.bot, ex, None, None, None, location, package)
         return False
Exemple #2
0
    async def attempt_delivery(self, location, package):
        try:
            if location is None:
                return False

            tloc = None if isinstance(location, User) or isinstance(
                location, DMChannel) else location
            now = datetime.datetime.fromtimestamp(time.time())
            send_time = datetime.datetime.fromtimestamp(package.send)
            desc = Translator.translate(
                'reminder_delivery',
                tloc,
                date=send_time.strftime('%c'),
                timediff=server_info.time_difference(
                    now, send_time, tloc)) + f"```\n{package.to_remind}\n```"
            desc = Utils.trim_message(desc, 2048)
            embed = Embed(color=16698189,
                          title=Translator.translate('reminder_delivery_title',
                                                     tloc),
                          description=desc)
            if location.id == package.channel_id or package.guild_id == '@me':
                ref = MessageReference(guild_id=package.guild_id
                                       if package.guild_id != '@me' else None,
                                       channel_id=package.channel_id,
                                       message_id=package.message_id,
                                       fail_if_not_exists=False)
            else:
                ref = None
                embed.add_field(
                    name=Translator.translate('jump_link', tloc),
                    value=
                    f'[Click me!]({assemble_jumplink(package.guild_id, package.channel_id, package.message_id)})'
                )

            try:
                await location.send(embed=embed, reference=ref)
            except (Forbidden, NotFound):
                return False
            else:
                return True
        except Exception as ex:
            await TheRealGearBot.handle_exception("Reminder delivery",
                                                  self.bot, ex, None, None,
                                                  None, location, package)
            return False