問題描述
我已經瀏覽了一些關于如何制作 Discord Python Bot 的示例,并且我已經看到 client
和 bot
幾乎可以互換使用,我正在無法找到你什么時候會使用哪一個.
I've been going through some examples on how to make a Discord Python Bot and I've been seeing client
and bot
being used almost interchangeably and I'm not able to find when you would use which one when.
例如:
client = discord.Client()
@client.event
async def on_message(message):
# we do not want the bot to reply to itself
if message.author == client.user:
return
if message.content.startswith('$guess'):
await client.send_message(message.channel, 'Guess a number between 1 to 10')
def guess_check(m):
return m.content.isdigit()
@client.event
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
client.run('token')
對比
bot = commands.Bot(command_prefix='?', description=description)
@bot.event
async def on_ready():
print('Logged in as')
print(bot.user.name)
print(bot.user.id)
print('------')
@bot.command()
async def add(left : int, right : int):
"""Adds two numbers together."""
await bot.say(left + right)
bot.run('token')
我開始認為它們具有非常相似的品質并且可以做同樣的事情,但個人偏好是與客戶端一起使用而不是與機器人一起使用.但是,它們確實存在差異,客戶端具有 on_message
而機器人等待 prefix 命令
.
I'm beginning to think they have very similar qualities and can do the same things but is a personal preference to go with a client vs. a bot. However they do have their differences where clients have an on_message
while bots wait for a prefix command
.
有人可以澄清client
和bot
之間的區別嗎?
Can someone please clarify the difference between client
and bot
?
推薦答案
Tl;dr
只需使用 commands.Bot
.
Bot
是Client
的擴展版本(它處于子類 關系中).IE.它是啟用了命令的客戶端的擴展,因此是子目錄 ext/commands
的名稱.
Bot
is an extended version of Client
(it's in a subclass relationship). Ie. it's an extension of Client with commands enabled, thus the name of the subdirectory ext/commands
.
Bot
類繼承了 Client
的所有功能,這意味著您可以使用 Client
、Bot
也可以.最引人注目的新增功能是命令驅動(@bot.command()
),而使用 Client
時您必須手動處理事件.Bot
的一個缺點是您必須通過查看示例或源代碼來學習其他功能,因為命令擴展沒有太多文檔記錄.UPD:現在記錄在這里.
The Bot
class inherits all the functionalities of Client
, which means that everything you can do with Client
, Bot
can do it too. The most noticeable addition was becoming command-driven (@bot.command()
), whereas you would have to manually work with handling events when using Client
. A downside of Bot
is that you will have to learn the additional functionalities from looking at examples or source codes since the commands extension isn't much documented. UPD: Now it is documented here.
如果你只是想讓你的機器人接受命令并處理它們,那么使用 Bot
會容易得多,因為所有的處理和預處理都是為你完成的.但是,如果您渴望編寫自己的句柄并使用 discord.py 做瘋狂的特技,那么請務必使用基礎 Client
.
If you simply want your bots to accept commands and handle them, it would be a lot easier to work with the Bot
since all the handling and preprocessing are done for you. But if you're eager to write your own handles and do crazy stunts with discord.py, then by all means, use the base Client
.
如果您不知道如何選擇,我建議您使用 commands.Bot
,因為它更容易使用,并且除了 Client
已經可以了.請記住,您不需要兩者.
In case you're stumped by which to choose, I recommend you to use commands.Bot
since it's a lot easier to work with and it's in addition of everything Client
can already do. And please remember that you do not need both.
錯誤:
client = discord.Client()
bot = commands.Bot(".")
# do stuff with bot
正確:
bot = commands.Bot(".")
# do stuff with bot
這篇關于Bot 和 Client 有什么區別?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!