ã¯ããã«
ç§ã¯ç€ŸäŒäºº1幎ç®ã®ããã°ã©ãã§ã
åŒç€Ÿæå¿äž»å¬ã®éçºå宿ã«åå ããã®ã§ããã®é䜿ã£ãæè¡ãããããã€ã³ããã¢ãŠããããããããšæããçããšããŸããã
ä¹±æä¹±çã§ã¯ãããŸããããä»ãåãããã ããã°å¹žãã§ãã
â»ããŸãã«å 茪ãã¿ãæ¿ãããããå®éã®åäœã®æ§åã¯ãããŸããããäºæ¿ãã ããã
ç°å¢
Windows 10
Python 3.6.4
discord.py 0.16.13
Discordãšã¯
Discordã¯ãã²ãŒããŒçslackã®ãããªããã¹ãïŒãã€ã¹ãã£ããã®ãµãŒãã¹ã§ã
ç¡æã§ãã°ç¡å¶éããã€ã¹ãã£ã³ãã«ãç¡å¶éãç»é¢å
±æããæè»œãšå€§å€äŸ¿å©ãªãµãŒãã¹ã§ãç§ãã²ãŒã 仲éãšãã€ã¹ãã£ããããªããã¹ãã©ãã¥ãŒã³ãããŠããŸãã
slackãšåæ§ã«ããã£ããããããäœããŸãã
ããã§ä»åã¯ãã²ãŒã 仲éã®è¿·èšãš~~æªå£éèšã~~ã¹ãã©ãã¥ãŒã³2ã®ãããã©ã³ãã ã§äžã€è¿ä¿¡ããŠãããããããäœãå
¬éããããšãç®æšãšããŸããã
Botçšã¢ã«ãŠã³ãäœæ
ãã¡ãã®èšäºãåèã«Botçšã¢ã«ãŠã³ããäœæãã仲éå ã®ãµãŒãã«æåŸ ããŸãã
ãã®éãããŒã¯ã³ãå¿ããã«ä¿åããŠãããŸãã
discord.py
discordBotçšã©ããã¢ãžã¥ãŒã«ã§ãã
æ®æ®µäœ¿ã£ãŠãanacondaã«ã¯ãªããžããªããªãã£ãã®ã§ãpipããã€ã³ã¹ããŒã«ããŸããã
BotãåãããŠã¿ã
Botãžã¡ã³ã·ã§ã³+ç¹å®ã®ããŒã¯ãŒãã§è¿·èšæ©èœãããã©ã³ãã æ©èœãå®è£ ããã³ãŒãããã¡ãã«ãªããŸãã
import discord
import asyncio
import random
import sys
import os
import botFunction.functions as f
client = discord.Client()
func_list = {
'åèš': f.random_meigen,
'è¿·èš': f.random_meigen,
'æŠåš': f.random_splat_buki,
'ãã': f.random_splat_buki,
'help': f.help,
'ãã«ã': f.help
}
@client.event
async def on_ready():
'''
èµ·åæã«åŒã°ããã¡ãœãã
'''
print('-----Logged in info-----')
print(client.user.name)
print(client.user.id)
print('------------------------')
@client.event
async def on_message(message):
'''
ç¹å®ã®ã¡ãã»ãŒãžãåãåã£ãŠåŠçãã\n
ä»ã¯ã¡ã³ã·ã§ã³ãéããšã©ã³ãã ã«åèšãè¿ã
'''
try:
if client.user.id in message.content:
for k in func_list:
if k in str(message.content):
await func_list[k](client, message)
break
else:
await f.random_reply(client, message)
except:
print(sys.exc_info())
client.run(os.environ.get('ENV_VAR_DISCORD_ID'))
async颿°ã«@client.eventãã³ã¬ãŒã¿ãã€ããŠã€ãã³ãã«ãŒãã«ç»é²ããŸãã
on_ready颿°ã§ã¯Botããã°ã€ã³ã«æåãããšããon_message颿°ã¯ãªã«ãããã¡ãã»ãŒãžãéä¿¡ããããšãã®ã€ãã³ãã§ãã
if client.user.id in message.content:
ãã®ifæã§Botã«å¯Ÿããã¡ã³ã·ã§ã³ãã©ãããå€å®ããŸãã
client.user.idãBotã®ãŠãŒã¶IDãmessage.contentãã¡ãã»ãŒãžæ¬æã«çžåœããŸãã
屿§ã颿°ã¯APIãªãã¡ã¬ã³ã¹ã«äœ¿ãæ¹ãæžããŠãã£ãã®ã§ããããåèã«ããŸããã
API Reference â discord.py 0.16.12 documentation
run ã¡ãœããã®åŒæ°ã«Botäœææã«ã³ããŒããããŒã¯ã³ãåŒæ°ã«æž¡ããŸãã
ïŒããã§ã¯herokuã®ç°å¢å€æ°ã«èšå®ããŠããŸã)
äžéãæžãããããŒã«ã«ã§å®è¡ããŠã¿ãŸããon_readyã®äžèº«ãã³ã³ãœãŒã«ã«åºåãããã°æåã§ãã
herokuã«ãããã€
äžéãæžããŠããŒã«ã«ã§åäœã確èªããããherokuã«pushããŠãããã€ããŸãã
herokuã®ã¢ã«ãŠã³ããäœæãheroku toolbeltãã€ã³ã¹ããŒã«ããŠã以äžã®ã³ãã³ãã§herokuã®æºåãããŸãã
heroku login
è¡šç€ºã«æ²¿ã£ãŠç»é²ããã¢ãã¬ã¹ãšãã¹ã¯ãŒããå ¥åãããšSSHããŒãçæãããŸãã
ã€ã¥ããŠherokuã«æ°ããã¢ããªãç»é²ããŸãã
heroku create {ã¢ããªå}
ã¢ããªãç»é²ããæç¹ã§herokuã®ãªããžããªãããŒã«ã«ã«ç»é²ãããŸãã
ããšã¯.gitignoreãããã€ãèšå®ããrequirements.txtã«äŸåé¢ä¿ã«ããã¢ãžã¥ãŒã«ãæå®ããŸãã
ä»åã¯discord.pyã ãã§ãã
ãããšããäžã€ãProcfileïŒæ¡åŒµåãªãïŒãšãããã¡ã€ã«ãçšæããŸã
ïŒprocfile · herokaijp/devcenter WikiïŒ
ãã£ãã説æãããšãProcfileã«æå®ããååã®ã³ãã³ãã§å®è¡ãããïŒãšããæãã§ãããã
æ£çŽçè§£äžè¶³ãªéšåã§ã¯ããã®ã§ãããä»åã¯ãã®ããã«èšè¿°ãããããŸãåããŸããã
bot: python mainBody.py
ããšã¯ãããã®ãã¡ã€ã«ãšæžããã³ãŒããherokuã«pushããã ãã§ãã
åæã«ãã«ãããŠãããã®ã§ãherokuã®ããã·ã¥ããŒãããèµ·åããã°åãå§ããŸãã
herokuã¯GitHubãšé£æºããæ©èœããããããã·ã¥ããŒããã飿ºãããªããžããªãæå®ããŠæå¹åãããšãæå®ãããã©ã³ãã«ã³ãŒããããŒãžããããšèªåã§ãªãã«ãããŸãã
GitHubã§ç®¡çãããå Žåã¯herokuã§ãªãGitHubã«pushããããšã«ãªããŸãã
herokuã®æéãã©ã³
ä»åã¯ç¡æãã©ã³ã䜿ããŸããã
ã¯ã¬ãžããã«ãŒãç»é²ãªãã§æã«550æéãç»é²ããã°æ1000æéããã»ã¹ãèµ°ãããããšãã§ããŸãã
ã¢ããªã³ãpostgreSQLãã¯ã¬ãžããã«ãŒãç»é²ã ãã§ç¡æïŒå¶éã€ãïŒã§å©çšã§ããã®ã§ãç»é²ããŠãããŠæã¯ãªããšæããŸãã
herokuã®ç¡æãã©ã³ã¯30åéæäœããªããã°èªåã§ã¹ãªãŒãã¢ãŒãã«å
¥ããšãã仿§ã«ãªã£ãŠããŸãã
discord.py ã¯ã€ãã³ãã«ãŒããåãç¶ããŠããã®ã§èªåã¹ãªãŒãã«ã¯ãªããŸããããä»ã®ãµãŒãã¹ã䜿ãå ŽåãæçšŒåæéã®å¶éã«ã¯æ³šæããå¿
èŠãããããã§ãã
ãããã«
ãããŸã§ã®å·¥çšã®ç·äœæ¥æéã¯10æéã»ã©ã§ããã
ãããã€ã«ããã£ãæéãïŒååã«Procfileã®èšå®ã«æããã£ãããšãé€ãã°ïŒéåžžã«çããäžåºŠåãå§ããã°pushããã ãã§ãããã€ã§ããæè»œãã¯å€§å€æ°ã«å
¥ã£ãŠããŸãã
ä»åŸã¯discord.pyã®ãªãã¡ã¬ã³ã¹ãããå°ãèªã¿èŸŒãã§ã察話åŒã®æ©èœã远å ããããšæã£ãŠããŸãã