cogwatch-自動熱從新加載不和.py命令文件。-Rob Wagner

cogwatch-自動熱從新加載不和.py命令文件。-Rob Wagner

發佈:2020-12-23 13:59:31.436231

做者:Rob Wagner

做者郵箱:13954303+robertwayne@users.noreply.github.com

首頁:https://github.com/robertwayne/cogwatch

文檔:None

下載連接

Cog Watch

Automatic hot-reloading for your discord.py command files.

Version Python Version


Getting Started

cogwatch is a utility that you can plug into your discord.py bot that will watch your command files directory (cogs) and automatically reload them as you modify or move them around in real-time. No more manually reloading commands with other commands, or (worse yet) restarting your bot, every time you edit that embed!html

You can install the library with pip install cogwatch.python

Import the watch decorator and apply it to your on_ready method and let the magic take effect.git

import asyncio
from discord.ext import commands
from cogwatch import watch


class ExampleBot(commands.Bot):
    def __init__(self):
        super().__init__(command_prefix='!')

    @watch(cogs_path='commands')
    async def on_ready(self):
        print('Bot ready.')

    async def on_message(self, message):
        if message.author.bot:
            return

        await self.process_commands(message)


async def main():
    client = ExampleBot()
    await client.start('YOUR_TOKEN_GOES_HERE')

if __name__ == '__main__':
    asyncio.run(main())

NOTE: cogwatch will only run if the __debug__ flag is set on Python. You can read more about that here. In short, unless you run Python with the -O flag from your command line, __debug__ will be True. If you just want to bypass this feature, pass in debug=False and it won't matter if the flag is enabled or not. This is a development tool. You should not run it on production.github

Using a Classless Bot

If you are using a classless bot you cannot use the decorator method and instead must manually create your watcher.app

from discord.ext import commands
from cogwatch import Watcher

client = commands.Bot(command_prefix='!')


@client.event
async def on_ready():
    print('Bot ready.')

    watcher = Watcher(client, cogs_path='commands')
    await watcher.start()

client.run('YOUR_TOKEN_GOES_HERE')

Configuration

You can pass any of these values to the decorator:less

cogs_path='commands': Root name of the cogs directory; cogwatch will only watch within this directory -- recursively.async

debug=True: Whether to run the bot only when the Python __debug__ flag is True. Defaults to True.oop

loop=None: Custom event loop. Defaults to the current running event loop.this

default_logger=True: Whether to use the default logger (to sys.stdout) or not. Defaults to True.url

preload=False: Whether to detect and load all found cogs on startup. Defaults to False.

Logging

By default the utility has a logger configured so users can get output to the console. You can disable this by passing in default_logger=False. If you want to hook into the logger -- for example, to pipe your output to another terminal or tail a file -- you can set up a custom logger like so:

import logging
import sys

watch_log = logging.getLogger('cogwatch')
watch_log.setLevel(logging.INFO)
watch_handler = logging.StreamHandler(sys.stdout)
watch_handler.setFormatter(logging.Formatter('[%(name)s] %(message)s'))
watch_log.addHandler(watch_handler)

Check out my other discord.py utility: dpymenus -- Simplified menus for discord.py developers.

Copy from pypi.org

查詢時間:12.062ms
渲染時間:12.191ms

本文同步分享在 博客「zhenruyan」(other)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索