Python3.6からPython3.7にアプデして、Discordbotを作る

2019年1月15日火曜日

Python VisualStudioCode warbot Web 限界創作村




アプデ

さて、現在(2018/12/29)の最新バージョンのPythonは、3.7.2。
そんでもって更新しろと突っ込まれてしまい、更新することに。


ぶっちゃけ更新とかしたくないんだけど仕方ないのでします。



Pythonのアプデ

私はwindows環境でpythonを動かしてるんですけど、インストールにanacondaでインストールしたので
割と楽にアプデできます。
python --version
でまずはバージョンを確認。
3.7だったら更新の必要なし。
 conda install python=3.7
でpythonを3.7にアプデ。
結構時間かかるのでしばし待ちます。


doneって出たら完了です。ウィンドウ閉じてもいいよ。



地獄

まず、3.7になってからasync?あたりの書き方が変わったみたいで、今までのdiscord.pyは使えなくなります。


というかエラーがでて動きません。マジクソ。


てなわけでrewite版をインストールすることになります。
ドキュメントはここ

インストールするコマンドは

python -m pip install -U https://github.com/Rapptz/discord.py/archive/master.zip#egg=discord.py[voice]
view raw gistfile1.txt hosted with ❤ by GitHub

これ
ちなみにgitが入ってることが絶対条件なのでgitを導入しておくこと。


このサイトがけっこうわかりやすいと思う。


そうしてインストールが終わったら実行!!
・・・・


動かない!!!!!!!!!!


そう、ほとんどのプログラムの書き方が変わってしまっているんです。
つらいね!?


というわけで、サンプルプログラムをいくつかご紹介します



Rewite版Discordpyの書き方

応答プログラム

3.6以前の場合

if message.content.startswith('受け取るメッセージ'):
  await client.send_message(message.channel, '返信')
view raw discordpy3.6.py hosted with ❤ by GitHub

Rewite版(3.7用)の場合

if message.content.startswith('受け取るメッセージ'):
await message.channel.send('返信')
view raw discordpy3.7.py hosted with ❤ by GitHub

ボイスチャット

3.6以前の場合

if message.content.startswith('受信するメッセージ'):
await client.send_message(message.channel, '返信')
voice = await client.join_voice_channel(message.author.voice.voice_channel)
player = voice.create_ffmpeg_player('再生するファイルパス')
player.start()
sleep(5) #vc切断までの時間
await voice.disconnect()

Rewite版(3.7用)の場合

if message.content.startswith('受信するメッセージ'):
await message.channel.send('返信')
channel = message.author.voice.channel
play_vc = await channel.connect()
play_vc.play(discord.FFmpegPCMAudio('再生するファイルパス'))
sleep(5) #vc切断までの時間
await play_vc.disconnect(force=False)

ちなみにffmpegが必要なのでインストールしてください


ここが便利ですとても



書き直そうね

けっこう殆どのやつが変わってるんで頑張ってリファレンス読み解いてください。
マジで時間かかるので3.7にするときは覚悟決めろ



関連記事

ブログ検索

総閲覧数

44,651