##動機
24時間稼働させたいけどレンタルサーバーは面倒だしiPhoneで動いたらいいな~と思ったから
##用意したもの
- iPhone (ios13.4.1の6s)
- Pythonista 3 (バージョンは3.3、1220円で買える)
https://apps.apple.com/jp/app/pythonista-3/id1085978097 - ファイル(デフォルトでインストールされてるやつ)
https://apps.apple.com/jp/app/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB/id1232058109
##StaSh(Pythonista Shell)を入れる
適当にThis iPhone の下に好きな名前のScriptファイルを作って下のコードを書き込む
import requests as r; exec(r.get('http://bit.ly/get-stash').text)
インストールが終わったらPythonistaを再起動してlaunch_stash.pyを実行する(作ったファイルと同じ場所にある)
##discord.pyを入れる
launch_stash.pyを実行するとターミナルみたいな画面になるのでそこで次のコードを打ち込む
pip install discord.py[voice]
音声を使わないなら
pip install discord.py
無事インストールできているか確認のために適当なScriptファイルで
import discord
と書いて実行してみる
するとModuleNotFoundErrorでctypes.macholibが無いよと言われる
##Cpythonを入れる
次のURLをsafariで開くとダウンロードが始まるので待つ
https://github.com/python/cpython/archive/v3.6.1.zip
ダウンロードが終わったらファイル(アプリ)を開く
cpythonというファイルをクリックすると解凍してくれるので少し待って、解凍したフォルダを長押しして移動を押すと移動する場所を選択することになるのでこのiPhone内>Pythonista3を押してコピーする(時間かかるかも)
Pythonistaを開き左側のタブを開いたらEXTERNAL FILESのopen...を押すと選択肢が出てくるのでFolder...を選択さっきコピーしたこのiPhone内のPythonista 3を押すとcpythonが出てくるので選択して完了を押す
するとcpythonフォルダーができているのでcpythonフォルダーのlibを開く、その中にctypesというフォルダーがあるのでEditを押してsite-package-3にファイルを移動させる
うまくいっていればimport discordでエラーが出ない
##動かしてみる
import sys
import time
import discord
TOKEN = '自分のBOTのアクセストークン'
client = discord.Client()
# 接続時の処理
@client.event
async def on_connect():
print('login')
time.sleep(5)
await client.close()
print('logout')
sys.exit()
client.run(TOKEN)
#動いたのでヨシ!
1回目は正常に動くが2回目以降エラーがでて機能しない
非同期処理のことが全く分からないので解決できない
エラー文はEvent loop is closedという単純なものでいろいろ調べて確かめてみたが結局解決できなかった
非同期処理の勉強して出直してきます......
##エラーが出ないコード
実行し終わったらpythonistaを落とすやつです。
import os
import time
import discord
TOKEN = '自分のBOTのアクセストークン'
client = discord.Client()
#接続時の処理
@client.event
async def on_connect():
print('login')
time.sleep(5)
await client.close()
print('logout')
os.abort()
client.run(TOKEN)
##以下参考サイト
Pythonista 3 にStaSh をインストールする。
https://qiita.com/maboy/items/cef5dee13d5b2e9ac843
Missing ctypes.macholib breaks ctypes.util
https://github.com/omz/Pythonista-Issues/issues/311