发送图片与添加元素

前情提要

  • 关於cog,当指令越写越多的时候,可以运用Cog的架构。

  • Cog可以视为一个extension,也就是说可以取出来(可以取出来也代表可以拿出来),这就代表在开发的时候可以不用一值将bot开开关关

  • 我们先使用!help

  • 有load、unload、reload,让你方便管理

# cogs/loadReload.py
import discord
from discord.ext import commands
from core.any import Cog_Extension
import json, os

with open('items.json', 'r', encoding='utf8') as file:
   data = json.load(file)

class reloadCogs(Cog_Extension):
    @commands.command()
    @commands.is_owner() # 管理者才能使用
    async def load(self, ctx, extension):
	self.bot.load_extension(f'cogs.{extension}')
	await ctx.author.send(f"{extension} 已上传")

    @commands.command()
    @commands.is_owner()
    async def unload(self, ctx, extension):
        self.bot.unload_extension(f'cogs.{extension}')
        await ctx.author.send(f'{extension} 已卸载')

    @commands.command()
    @commands.is_owner()
    async def reload(self, ctx, extension):
        # 如果直接更改程序码的话就直接reload
	self.bot.reload_extension(f'cogs.{extension}')
	await ctx.author.send(f'{extension} 已更新')


def setup(bot):
    bot.add_cog(reloadCogs(bot))

发送图片

  • 处理图片和gif的方式一样,这边一样直接上程序码吧
# cogs/ahoy.py

from discord.ext import commands
import discord
from discord.ext.commands import bot
from core.any import Cog_Extension
import json

with open('./items.json', "r", encoding = "utf8") as file:
    data = json.load(file)

class Ahoy(Cog_Extension):
    
    @commands.command(pass_context = True)
    async def ahoy(self, ctx):
        await ctx.send(file = discord.File('your gif or picture'))

def setup(bot):
    bot.add_cog(Ahoy(bot))

什麽是pass_context?

  • 上述程序码之中,有一个pass_context = True,这是什麽?
    在discord1.0版,它的作用是不再传递上下文,而是将指定的文字作为参数传递给装饰器

回到json档

  • 是时候该添加刚才的图片(gif)了
{
    "token":"your token",
    "自订":"your gif or picture"
}
  • 如果以这种型式来看的话,上述程序码的最後一行必须改成
await ctx.send(file = discord.File(data["自订"]))

添加元素

# cogs/embeds.py
# 略
@commands.command(pass_context = True)
async def helping(ctx):
    sms = discord.Embed(title = "指令", 
        description = "'忘记了吗? 来看一下吧~~", color = 0x4599)
    await ctx.send(embed = sms)  

# 略
  • 示意图

  • 接下来自行使用add_field()函数,添加中心骨干

sms.add_field(name = "!ahoy", value = "Ahoy.gif", inline = True)
sms.add_field(name = "!clear", value = "用 !clear + 数字删讯息", inline = True)
sms.add_field(name = "!sms", value = "等於 == !help", inline = True)
  • 最後加张照片,这张照片会在右上角出现
# url可以放在json档
sms.set_thumbnail(url = "https://www.formula-ai.com/wp-content/uploads/2020/09/python_or_java_meme.jpg")
  • 结果图(忘记更新XD)

<<:  Day02 - 语音辨识的架构、发展过程

>>:  Day 14 在VSCode中使用Azure

深度学习训练集问题

小弟是深度学习方面新手 最近想试试图像辨识但遇到了难题 我想辨认的三种东西分别是lad, lcx, ...

Progressive Web App 针对应用操作介面优化操作体验 (27)

网页的外观和操作本质上还是和原生的有差异但可以透过配置来让体验更接近。 全萤幕模式 视觉设计 事件操...

Day30练习java-魔方阵+心得

原本想说都最後一天了,就写个心得就好了ㄅ,但是同学突然问我要不要写写看魔方阵,引起我的好奇心想说试试...

[Day10] TS:什麽!Conditional Types 中还能建立型别?使用 infer 来实作 ReturnType 和 Parameters

今天会来说明 TypeScript 中内建 ReturnType 和 Parameters 的原始...

[Day29]今天想来分享一些网路上的学习资源~以及学习历程

没有错,最近发生了一些事情,让我想要跟我的读者讲讲这些事情,这些我觉得很重要的事情XD((虽然好像...