mirror of
				https://github.com/miaowware/qrm2.git
				synced 2025-11-03 19:50:20 -05:00 
			
		
		
		
	exts/propagation: Fix ?solarweather no image bug
Back to the ugly hack of downloading the image and uploading it to discord. Fixes #461
This commit is contained in:
		
							parent
							
								
									a4c8a056ac
								
							
						
					
					
						commit
						3110961a3a
					
				@ -11,6 +11,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
 | 
			
		||||
- Long-deprecated aliases for `?solarweather`.
 | 
			
		||||
### Fixed
 | 
			
		||||
- Issue where ?hamstudy would not work in direct messages (#442).
 | 
			
		||||
- Issue where `?solarweather` would not show a picture (#461).
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## [2.8.0] - 2022-06-24
 | 
			
		||||
 | 
			
		||||
@ -7,11 +7,11 @@ SPDX-License-Identifier: LiLiQ-Rplus-1.1
 | 
			
		||||
"""
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
from io import BytesIO
 | 
			
		||||
 | 
			
		||||
import aiohttp
 | 
			
		||||
import cairosvg
 | 
			
		||||
from datetime import datetime
 | 
			
		||||
import httpx
 | 
			
		||||
 | 
			
		||||
import discord
 | 
			
		||||
import discord.ext.commands as commands
 | 
			
		||||
@ -27,15 +27,17 @@ class PropagationCog(commands.Cog):
 | 
			
		||||
 | 
			
		||||
    def __init__(self, bot):
 | 
			
		||||
        self.bot = bot
 | 
			
		||||
        self.session = aiohttp.ClientSession(connector=bot.qrm.connector)
 | 
			
		||||
        self.httpx_client: httpx.AsyncClient = bot.qrm.httpx_client
 | 
			
		||||
 | 
			
		||||
    @commands.command(name="mufmap", aliases=["muf"], category=cmn.Cats.WEATHER)
 | 
			
		||||
    async def mufmap(self, ctx: commands.Context):
 | 
			
		||||
        """Shows a world map of the Maximum Usable Frequency (MUF)."""
 | 
			
		||||
        async with ctx.typing():
 | 
			
		||||
            async with self.session.get(self.muf_url, headers={"Connection": "Upgrade", "Upgrade": "http/1.1"}) as r:
 | 
			
		||||
                svg = await r.read()
 | 
			
		||||
            out = BytesIO(cairosvg.svg2png(bytestring=svg))
 | 
			
		||||
            resp = await self.httpx_client.get(self.muf_url)
 | 
			
		||||
            await resp.aclose()
 | 
			
		||||
            if resp.status_code != 200:
 | 
			
		||||
                raise cmn.BotHTTPError(resp)
 | 
			
		||||
            out = BytesIO(cairosvg.svg2png(bytestring=await resp.aread()))
 | 
			
		||||
            file = discord.File(out, "muf_map.png")
 | 
			
		||||
            embed = cmn.embed_factory(ctx)
 | 
			
		||||
            embed.title = "Maximum Usable Frequency Map"
 | 
			
		||||
@ -47,9 +49,11 @@ class PropagationCog(commands.Cog):
 | 
			
		||||
    async def fof2map(self, ctx: commands.Context):
 | 
			
		||||
        """Shows a world map of the Critical Frequency (foF2)."""
 | 
			
		||||
        async with ctx.typing():
 | 
			
		||||
            async with self.session.get(self.fof2_url,  headers={"Connection": "Upgrade", "Upgrade": "http/1.1"}) as r:
 | 
			
		||||
                svg = await r.read()
 | 
			
		||||
            out = BytesIO(cairosvg.svg2png(bytestring=svg))
 | 
			
		||||
            resp = await self.httpx_client.get(self.fof2_url)
 | 
			
		||||
            await resp.aclose()
 | 
			
		||||
            if resp.status_code != 200:
 | 
			
		||||
                raise cmn.BotHTTPError(resp)
 | 
			
		||||
            out = BytesIO(cairosvg.svg2png(bytestring=await resp.aread()))
 | 
			
		||||
            file = discord.File(out, "fof2_map.png")
 | 
			
		||||
            embed = cmn.embed_factory(ctx)
 | 
			
		||||
            embed.title = "Critical Frequency (foF2) Map"
 | 
			
		||||
@ -67,15 +71,20 @@ class PropagationCog(commands.Cog):
 | 
			
		||||
        embed.set_image(url=self.gl_baseurl + date_params)
 | 
			
		||||
        await ctx.send(embed=embed)
 | 
			
		||||
 | 
			
		||||
    @commands.command(name="solarweather", aliases=["solar"],
 | 
			
		||||
                      category=cmn.Cats.WEATHER)
 | 
			
		||||
    @commands.command(name="solarweather", aliases=["solar"], category=cmn.Cats.WEATHER)
 | 
			
		||||
    async def solarweather(self, ctx: commands.Context):
 | 
			
		||||
        """Gets a solar weather report."""
 | 
			
		||||
        resp = await self.httpx_client.get(self.n0nbh_sun_url)
 | 
			
		||||
        await resp.aclose()
 | 
			
		||||
        if resp.status_code != 200:
 | 
			
		||||
            raise cmn.BotHTTPError(resp)
 | 
			
		||||
        img = BytesIO(await resp.aread())
 | 
			
		||||
        file = discord.File(img, "solarweather.png")
 | 
			
		||||
        embed = cmn.embed_factory(ctx)
 | 
			
		||||
        embed.title = "☀️ Current Solar Weather"
 | 
			
		||||
        embed.colour = cmn.colours.good
 | 
			
		||||
        embed.set_image(url=self.n0nbh_sun_url)
 | 
			
		||||
        await ctx.send(embed=embed)
 | 
			
		||||
        embed.set_image(url="attachment://solarweather.png")
 | 
			
		||||
        await ctx.send(file=file, embed=embed)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def setup(bot: commands.Bot):
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user