Dans l'après-midi, j'ai essayé diverses choses en utilisant un certain Discord.py, Une personne a dit cela sur le serveur de Discord. ** "Je veux parler !!" ** Talking-kun est un TalkBot sur Discord qui est gentil avec moi et qui n'a personne à qui parler pendant un moment ... À propos, il y avait une API gratuite appelée A3RT. Très bien, faisons-le.
La personne qui écrit ceci est un débutant en Python, il se peut donc que certains points ne puissent pas être atteints. À ce moment-là, soyez gentil ... C'est aussi le premier message de Qiita. J'ai hâte de travailler avec vous. ~~ C'est un chat. ~~
En ce qui concerne l'environnement, il est considérablement interdit par rapport au Bot comme l'article de Qiita, donc si vous vous référez à cela, veuillez l'ajuster à votre propre environnement.
Si vous parlez sur un canal spécifique, il réagira sans condition → Renvoyez-le avec Talk API de A3RT.
Vous pouvez facilement émettre une clé API en envoyant un e-mail à partir de la page TalkAPI. Je l'utiliserai plus tard.
run.py comme ça.
run.py
import discord
from discord.ext import commands
import asyncio
import os
import sys
import traceback
loop = asyncio.get_event_loop()
airlinia_token = os.environ['AIRLINIA_DISCORD_TOKEN'] #Variables environnementales ~~.
technetium_token = os.environ['TECHNETIUM_DISCORD_TOKEN']
class DISCORDBOT(commands.Bot):
#constructeur.
def __init__(self, command_prefix, cogs, **options):
#Exécutez en passant une valeur au constructeur de la super classe.
super().__init__(command_prefix, **options)
#Dans le dossier Cog.Lisez le fichier py.
for cog in os.listdir(f'./{cogs}'):
if cog.endswith('.py'):
try:
self.load_extension(f'{cogs}.{cog[:-3]}')
except Exception:
traceback.print_exc()
async def on_ready(self): #Appelez lorsque vous êtes prêt.
print(f"""Vous êtes maintenant connecté.
------\Aperçu du compte nBot\n Nom d'utilisateur:{self.user.name}\n ID utilisateur:{self.user.id}
------\nDiscord.version de py\n{discord.__version__}
------\Version Python\n{sys.version}
――――――――――――――――――――――――――――――""")
await self.change_presence(activity=discord.Game(name=f'{self.command_prefix}¦{self.user.name} - by.amazakura0804'))
if __name__ == '__main__':
airlinia = DISCORDBOT(command_prefix='al!', cogs='airlinia_cogs', loop=loop)
airlinia_task = loop.create_task(airlinia.start(airlinia_token))
technetium = DISCORDBOT(command_prefix='te!', cogs='technetium_cogs', loop=loop)
technetium_task = loop.create_task(technetium.start(technetium_token))
loop.run_until_complete(technetium_task)
loop.run_until_complete(airlinia_task)
loop.close()
En se référant à Développement de bot à l'aide de Bot Commands Framework de discord.py. TOKEN est une variable d'environnement. Veuillez changer ici en fonction de l'environnement. Je n'en déplacerai pas plus d'un. Je pense que ce genre de sentiment est suffisant.
run.py
import discord
from discord.ext import commands
import asyncio
import os
import sys
import traceback
token = os.environ['DISCORD_TOKEN']
class HogeBot(commands.Bot):
#constructeur.
def __init__(self, command_prefix, cogs, **options):
#Exécutez en passant une valeur au constructeur de la super classe.
super().__init__(command_prefix, **options)
#Dans le dossier Cog.Lisez le fichier py.
for cog in os.listdir(f'./{cogs}'):
if cog.endswith('.py'):
try:
self.load_extension(f'{cogs}.{cog[:-3]}')
except Exception:
traceback.print_exc()
async def on_ready(self): #Appelez lorsque vous êtes prêt.
print(f"""Vous êtes maintenant connecté.
------\Aperçu du compte nBot\n Nom d'utilisateur:{self.user.name}\n ID utilisateur:{self.user.id}
------\nDiscord.version de py\n{discord.__version__}
------\Version Python\n{sys.version}
――――――――――――――――――――――――――――――""")
await self.change_presence(activity=discord.Game(name=f'{self.command_prefix}¦{self.user.name} - by.amazakura0804'))
if __name__ == '__main__':
hogebot = HogeBot(command_prefix='!', cogs='hogebot_cogs')
hogebot.run(token) #Jeton de robot
Talk.py
Talk.py
import discord
from discord.ext import commands
import asyncio
import os
import pya3rt
class Talk_Bot(commands.Cog):
def __init__(self, airlinia):
self.bot = airlinia #Recevez le bot.
@commands.Cog.listener()
async def on_message(self, message):
if message.author.bot: #Accrochez le message du bot
return
if message.channel.id == TALK_CHANNEL_ID: #Remplacez-le par l'ID CHANNEL que vous souhaitez prononcer selon le cas.
client = pya3rt.TalkClient(os.environ['TALK_API_KEY']) #Puisqu'il s'agit également d'une variable d'environnement, elle est omise ci-dessous.
content = client.talk(message.content)['results'][0]['reply']
await message.channel.send(content) #Envoyez un message de réponse
def setup(airlinia):
airlinia.add_cog(Talk_Bot(airlinia))
Oui. A3RT est étrange. Essayez d'appliquer la clé d'API A3RT à une variable d'environnement ou de l'insérer directement. Avec juste ce code ...
Yay. Dieu. Merci d'avoir recruté.
En utilisant diverses API, y compris A3RT, la gamme de choses qui peuvent être faites s'élargira considérablement. Il y a beaucoup d'autres choses qui semblent intéressantes, alors j'aimerais en profiter.
Recommended Posts