質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2967閲覧

python初心者です、discord botでawaitがうまく機能しません

ousatu

総合スコア12

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2019/07/26 18:53

編集2019/07/27 06:11

discord.botで特定の曜日時間でメッセージを送るようにしたい

数日前に初めてpythonを始めたものです。
discord botに特定の曜日、日時になったときにメッセージを送るプログラムを作成したいのですが、エラーも出ず、頼れるかたも周りにおらず、困っています。
エラーメッセージが出ないのですが、初心者のた安直な手段ではありますがprint分を配置することで大体のエラーが起こっている場所を特定しました。

print("send2") await channel.send('時間だよ') print("send3")
print("完了") await SendMessage()

どうやらこの二つが機能しておらず、discordにメッセージを送れないようです。
よろしくお願いします

### コードエラー説明
特定の曜日と時間になったときメッセージを送るBOTを作りたいと思い、today()とweekday()でその日の曜日を割り出し、曜日番号と=であれば"第1段階"と出力されます。

if date.weekday()==5: print("1段階")

次にその日の時間を割り出し、その時間と=であれば"完了"と出力し、await SendMessage()をdiscordに送るはずなのですが、メッセージが届きません。

if timedate.hour==1: print("完了") await SendMessage()

そこでSendMessage()を見てみると"send2"で止まってることがわかりました。

async def SendMessage(): print("send") channel = client.get_channel(チャンネル番号) print("send2") await channel.send('時間だよ') print("send3"

コード内容とエラー文

python

1 2ソースコード 3import datetime 4import discord 5from discord.ext import tasks 6 7TOKEN = "トークン番号" 8CHANNEL_ID = チャンネル番号 9client = discord.Client() 10 11 12print(datetime.date.today()) 13date=datetime.date.today() 14print(date.weekday()) 15timedate=datetime.datetime.now() 16print(timedate) 17print("時:",timedate.hour) 18print("分:",timedate.minute) 19 20@client.event 21async def on_ready(): 22 print('ready') 23 24async def SendMessage(): 25 print("send") 26 channel = client.get_channel(チャンネル番号) 27 print("send2") 28 await channel.send('時間だよ') 29 print("send3") 30 31@tasks.loop(seconds=5) 32async def loop(): 33 if date.weekday()==5: 34 print("1段階") 35 if timedate.hour==1: 36 print("完了") 37 await SendMessage() 38 print("完了2") 39 40@client.event 41async def on_message(message): 42 43 if message.author.bot: 44 return 45 46 if message.content == '!help': 47 await message.channel.send('現在使用できるコマンドはありません') 48 49loop.start() 50client.run(TOKEN)

出力

2019-07-27 5 2019-07-27 01:22:22.753057 時: 1 分: 22 1段階 完了 send send2 ready

エラー文

ありません、ごめんなさい

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gentaro

2019/07/27 04:37

> TOKEN = "" > CHANNEL_ID = 秘匿したい情報なら消してて当然ですが、実際にはちゃんと値をセットしてるんですよね?(そこら変を書いてないとこのコードをコピペしただけだとそりゃ送れないよね、となるので念の為)
ousatu

2019/07/27 05:27

しています!
ousatu

2019/07/27 05:58

修正しました!
guest

回答1

0

自己解決

なんとか自己解決しました

投稿2019/08/07 14:19

ousatu

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問