Ejemplo n.º 1
0
 def calculate_tax(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         USAGE = localized_string(lang, "taxUsage")
         if not data:
             return USAGE
         parts = data.split()
         if len(parts) < 2:
             return localized_string(lang, "taxUsage")
         amount = safe_int(parts[0], 0)
         if amount == 0:
             return USAGE
         query = " ".join(parts[1:])
         tax_amount = EFT.check_tax(lang, amount, query)
         if not tax_amount:
             return USAGE
         (tax, model) = tax_amount
         profit = amount - tax
         return localized_string(
             lang,
             "twitch_tax",
             model.name,
             format(int(amount), ","),
             format(int(tax), ","),
             format(int(profit), ","),
             maya.MayaDT.from_datetime(model.updated).slang_time(),
         )
     except Exception as e:
         print(e)
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 2
0
 def bot_wiki(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     wiki = EFT.check_price(lang, data)
     try:
         return localized_string(lang, "twitch_wiki", wiki.name, wiki.wikiLink)
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 3
0
 def bot_profit(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         return localized_string(
             lang,
             "twitch_profit",
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 4
0
 def bot_kappaquest(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         kappa = EFT.check_kappaquests(lang, data)
         return localized_string(
             lang,
             "twitch_kappaQuests",
             kappa.isReq,
             kappa.name,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 5
0
 def bot_astat(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         astat = EFT.check_astat(lang, data)
         return localized_string(
             lang,
             "twitch_astat",
             astat.name,
             astat.damage,
             astat.penetration,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 6
0
 def bot_avg24h(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         avg24h = EFT.check_price(lang, data)
         return localized_string(
             lang,
             "twitch_avg24h",
             avg24h.name,
             format(int(avg24h.avg24hPrice), ","),
             maya.MayaDT.from_datetime(avg24h.updated).slang_time(),
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 7
0
    def bot_medical(self, ctx: CommandContext,
                    data: str) -> Union[str, discord.Embed]:
        log.info("%s - searching for %s (new)\n", ctx.channel, data)
        lang = self.db.get_lang(ctx.channel)
        try:
            medical = EFT.check_medical(lang, data)
            embed = discord.Embed(
                title=medical.name,
                url=medical.wikiLink,
                description=medical.description,
                color=0x780A81,
            )
            embed.set_thumbnail(
                url="https://static.tarkov-database.com/image/icon/1-1/{0}.png"
                .format(medical.bsgID))
            embed.add_field(
                name=localized_string(lang, "medUseTime"),
                value=medical.useTime,
                inline=True,
            )
            embed.add_field(
                name=localized_string(lang, "maxItemHP"),
                value=medical.resources,
                inline=True,
            )
            embed.add_field(
                name=localized_string(lang, "maxHealPerUse"),
                value=medical.resourceRate,
                inline=True,
            )

            return embed
        except:
            embed = discord.Embed(
                title="LogicEFTBot - Error",
                color=0x780A81,
            )
            embed.set_thumbnail(url="https://illogical.network/api/error.png")
            embed.add_field(
                name="Invalid Item Search",
                value=
                "You've entered in an invalid medical item ; please try again.",
                inline=True,
            )
            return embed
Ejemplo n.º 8
0
 def bot_slot(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         slot = EFT.check_price(lang, data)
         return localized_string(
             lang,
             "twitch_slot",
             slot.name,
             format(int((slot.price / slot.slots)), ","),
             maya.MayaDT.from_datetime(slot.updated).slang_time(),
         )
     except Exception as e:
         print(e)
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 9
0
 def bot_trader(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     trader = EFT.check_price(lang, data)
     try:
         return localized_string(
             lang,
             "twitch_trader",
             trader.name,
             trader.traderName,
             format(int(trader.traderPrice), ","),
             maya.MayaDT.from_datetime(trader.updated).slang_time(),
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 10
0
 def bot_medical(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         medical = EFT.check_medical(lang, data)
         return localized_string(
             lang,
             "twitch_medical",
             medical.name,
             medical.useTime,
             medical.resources,
             medical.resourceRate,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 11
0
 def bot_maps(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         maps = EFT.check_maps(lang, data)
         return localized_string(
             lang,
             "twitch_maps",
             maps.name,
             maps.duration,
             maps.players,
             maps.enemies,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 12
0
 def bot_armor(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         armor = EFT.check_armor(lang, data)
         return localized_string(
             lang,
             "twitch_armor",
             armor.armorName,
             armor.armorClass,
             armor.armorDurability,
             armor.armorZones,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 13
0
 def bot_price(self, ctx: CommandContext,
               data: str) -> Union[str, discord.Embed]:
     log.info("%s - searching for %s (new)\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         price = EFT.check_price(lang, data)
         embed = discord.Embed(
             title=price.name,
             url=price.wikiLink,
             color=0x780A81,
         )
         embed.set_thumbnail(url=price.img)
         embed.add_field(
             name=localized_string(lang, "marketPrice"),
             value=format(int(price.price), ","),
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "marketTrader"),
             value=price.traderName,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "marketTraderPrice"),
             value=format(int(price.traderPrice), ","),
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "marketSlot"),
             value=format(round((price.price / price.slots)), ","),
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "market7dAvg"),
             value=format(int(price.avg7daysPrice), ","),
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "market24hAvg"),
             value=format(int(price.avg24hPrice), ","),
             inline=True,
         )
         embed.set_footer(
             text=localized_string(lang, "marketUpdated") +
             maya.MayaDT.from_datetime(price.updated).slang_time())
         return embed
     except:
         embed = discord.Embed(
             title="LogicEFTBot - Error",
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://illogical.network/api/error.png")
         embed.add_field(
             name="Invalid Item Search",
             value="You've entered in an invalid item ; please try again.",
             inline=True,
         )
         return embed
Ejemplo n.º 14
0
 def bot_maps(self, ctx: CommandContext,
              data: str) -> Union[str, discord.Embed]:
     log.info("%s - searching for %s (new)\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         maps = EFT.check_maps(lang, data)
         embed = discord.Embed(
             title=maps.name,
             url=maps.wikiLink,
             description=maps.features,
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://eft.bot/images/wiki/{0}.png".
                             format(maps.shortName))
         embed.add_field(
             name=localized_string(lang, "mapPlayers"),
             value=maps.players,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "mapDuration"),
             value=maps.duration,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "mapEnemies"),
             value=maps.enemies,
             inline=True,
         )
         return embed
     except:
         embed = discord.Embed(
             title="LogicEFTBot - Error",
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://illogical.network/api/error.png")
         embed.add_field(
             name="Invalid Item Search",
             value=
             "You've entered in an invalid map name ; please try again.",
             inline=True,
         )
         return embed
Ejemplo n.º 15
0
 def bot_helmet(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         helmet = EFT.check_helmets(lang, data)
         return localized_string(
             lang,
             "twitch_helmet",
             helmet.name,
             helmet.armorClass,
             helmet.armorDurability,
             helmet.armorRico,
             helmet.armorZones,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 16
0
 def bot_armorstats(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         armor = EFT.check_armor(lang, data)
         return localized_string(
             lang,
             "twitch_armorstats",
             armor.armorName,
             armor.armorEffectiveDurability,
             armor.armorMoveSpeed,
             armor.armorTurnSpeed,
             armor.armorErgo,
         )
     except Exception as e:
         print(e)
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 17
0
 def bot_helmetstats(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         helmet = EFT.check_helmets(lang, data)
         return localized_string(
             lang,
             "twitch_helmetstats",
             helmet.name,
             helmet.armorMoveSpeed,
             helmet.armorTurnSpeed,
             helmet.armorErgo,
             helmet.helmetSoundReduc,
             helmet.helmetBlocksHeadset,
         )
     except:
         return localized_string(
             lang,
             "searchFailed",
         )
Ejemplo n.º 18
0
 def bot_astat(self, ctx: CommandContext,
               data: str) -> Union[str, discord.Embed]:
     log.info("%s - searching for %s (new)\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         astat = EFT.check_astat(lang, data)
         embed = discord.Embed(
             title=astat.name,
             url=astat.wikiLink,
             description=astat.description,
             color=0x780A81,
         )
         embed.set_thumbnail(
             url="https://static.tarkov-database.com/image/icon/1-1/{0}.png"
             .format(astat.bsgID))
         embed.add_field(
             name=localized_string(lang, "ammoFlesh"),
             value=astat.damage,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "ammoPen"),
             value=astat.penetration,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "ammoArmor"),
             value=astat.armorDamage,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "ammoAccuracy"),
             value=astat.accuracy,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "ammoRecoil"),
             value=astat.recoil,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "ammoFrag"),
             value=astat.fragmentation,
             inline=True,
         )
         return embed
     except:
         embed = discord.Embed(
             title="LogicEFTBot - Error",
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://illogical.network/api/error.png")
         embed.add_field(
             name="Invalid Item Search",
             value=
             "You've entered in an invalid ammo item ; please try again.",
             inline=True,
         )
         return embed
Ejemplo n.º 19
0
 def calculate_tax(self, ctx: CommandContext, data: str) -> str:
     log.info("%s - searching for %s\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         USAGE = localized_string(lang, "taxUsage")
         if not data:
             return USAGE
         parts = data.split()
         if len(parts) < 2:
             return localized_string(lang, "taxUsage")
         amount = safe_int(parts[0], 0)
         if amount == 0:
             return USAGE
         query = " ".join(parts[1:])
         tax_amount = EFT.check_tax(lang, amount, query)
         if not tax_amount:
             return USAGE
         (tax, model) = tax_amount
         profit = amount - tax
         embed = discord.Embed(
             title=model.name,
             url=model.wikiLink,
             color=0x780A81,
         )
         embed.set_thumbnail(url=model.img)
         embed.add_field(
             name=localized_string(lang, "taxBasePrice"),
             value=format(int(model.basePrice), ",") + " ₽",
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "taxBaseTax"),
             value=format(int(tax), ",") + " ₽",
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "taxProfit"),
             value=format(int(profit), ",") + " ₽",
             inline=True,
         )
         embed.set_footer(
             text=localized_string(lang, "marketUpdated") +
             maya.MayaDT.from_datetime(model.updated).slang_time())
         return embed
     except:
         embed = discord.Embed(
             title="LogicEFTBot - Error",
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://illogical.network/api/error.png")
         embed.add_field(
             name="Invalid Item Search",
             value=
             "You've entered in an invalid map name ; please try again.",
             inline=True,
         )
         return embed
Ejemplo n.º 20
0
 def test_bot_help(self, mock_one, mock_two):
     response = self.bot.exec(self.fake_context, "help", "fake_help")
     self.assertEqual(response, localized_string("en", "botHelp"))
Ejemplo n.º 21
0
 def test_add_bot(self, mock_one, mock_two):
     response = self.bot.exec(self.fake_context, "addbot", "fake_add_bot")
     self.assertEqual(response, localized_string("en", "addBot"))
Ejemplo n.º 22
0
 def bot_help(self, ctx: CommandContext, _=None) -> str:
     return localized_string(self.db.get_lang(ctx.channel), "botHelp")
Ejemplo n.º 23
0
 def bot_add_bot(
     self, ctx: CommandContext, _=None
 ) -> str:  # Later change this to invite link
     return localized_string(self.db.get_lang(ctx.channel), "addBot")
Ejemplo n.º 24
0
 def bot_helmet(self, ctx: CommandContext,
                data: str) -> Union[str, discord.Embed]:
     log.info("%s - searching for %s (new)\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         helmet = EFT.check_helmets(lang, data)
         embed = discord.Embed(
             title=helmet.name,
             url=helmet.wikiLink,
             description=helmet.description,
             color=0x780A81,
         )
         embed.set_thumbnail(
             url="https://static.tarkov-database.com/image/icon/1-1/{0}.png"
             .format(helmet.bsgID))
         embed.add_field(
             name=localized_string(lang, "helmetZones"),
             value=helmet.armorZones,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetClass"),
             value=helmet.armorClass,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetDurability"),
             value=helmet.armorDurability,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetRicochet"),
             value=helmet.armorRico,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetMoveSpeed"),
             value=helmet.armorMoveSpeed,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetTurnSpeed"),
             value=helmet.armorTurnSpeed,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetErgo"),
             value=helmet.armorErgo,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetSoundReduc"),
             value=helmet.helmetSoundReduc,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "helmetBlocksHeadset"),
             value=helmet.helmetBlocksHeadset,
             inline=True,
         )
         return embed
     except:
         embed = discord.Embed(
             title="LogicEFTBot - Error",
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://illogical.network/api/error.png")
         embed.add_field(
             name="Invalid Item Search",
             value=
             "You've entered in an invalid helmet item ; please try again.",
             inline=True,
         )
         return embed
Ejemplo n.º 25
0
 def bot_armor(self, ctx: CommandContext,
               data: str) -> Union[str, discord.Embed]:
     log.info("%s - searching for %s (new)\n", ctx.channel, data)
     lang = self.db.get_lang(ctx.channel)
     try:
         armor = EFT.check_armor(lang, data)
         embed = discord.Embed(
             title=armor.armorName,
             url=armor.wikiLink,
             description=localized_string(lang, "armorZones") +
             armor.armorZones,
             color=0x780A81,
         )
         embed.set_thumbnail(
             url="https://static.tarkov-database.com/image/icon/1-1/{0}.png"
             .format(armor.bsgID))
         embed.add_field(
             name=localized_string(lang, "armorClass"),
             value=armor.armorClass,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "armorMaterial"),
             value=armor.armorMaterial,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "armorDurability"),
             value=armor.armorDurability,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "armorMoveSpeed"),
             value=armor.armorMoveSpeed,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "armorTurnSpeed"),
             value=armor.armorTurnSpeed,
             inline=True,
         )
         embed.add_field(
             name=localized_string(lang, "armorErgo"),
             value=armor.armorErgo,
             inline=True,
         )
         embed.set_footer(
             text=localized_string(lang, "armorEffectiveDurability") +
             armor.armorEffectiveDurability)
         return embed
     except Exception as e:
         embed = discord.Embed(
             title="LogicEFTBot - Error",
             color=0x780A81,
         )
         embed.set_thumbnail(url="https://illogical.network/api/error.png")
         embed.add_field(
             name="Invalid Item Search",
             value=
             "You've entered in an invalid armor item ; please try again.",
             inline=True,
         )
         print(e)
         return embed