前回までは
テキストチャンネル作成: guild.create_text_channel()
ボイスチャンネル作成 : guild.create_voice_channel()
カテゴリ作成 : guild.create_category()
の3つに触れました。
ついでなのでチャンネル削除についても作ってみたいと思います。
チャンネルを削除する
.chdel
の後に
-
チャンネルidを入力しない場合: そのチャンネルを削除
-
チャンネルidを入力した場合 :id指定されたチャンネルを削除
-
idを入力したが存在しない場合:削除しない
このパターンで行きます。
コードです。
# 新しくモジュールをインポートします
from asyncio import sleep
if message.content.startswith('.chdel'):
try:
msg = message.content.split()
if len(msg) == 1:
await message.channel.send(f'{message.author.mention} が チャンネル : {message.channel}を 10秒後に 削除します。')
await sleep(10)
await message.channel.delete()
else:
ch_id = int(msg[1])
del_channel = message.guild.get_channel(ch_id)
if del_channel is None:
await message.channel.send('チャンネルが見つかりません。')
else:
await message.channel.send(f'{message.author.mention} が チャンネル : {del_channel}を 10秒後に 削除します。')
await sleep(10)
await del_channel.delete()
await message.channel.send(f'{message.author.mention} が チャンネル{del_channel} を削除しました。')
except:
await message.channel.send(f'{message.author.mention}, エラーです。')
解説
.delete()
を使います。
if len(msg) == 1:
から
これは上のmsgが .chdel
の1つだったらという意味です。
この場合、メッセージを送信したチャンネルを削除します。
await sleep(10)
await message.channel.delete()
10秒待ってからメッセージを送信したチャンネルを削除します。
else:
以下
- if の条件に当てはまらなかったら(チャンネルidが入力されていなかったら)
もしその中で指定したチャンネルが見つからなかった場合、
チャンネルが見つかりません。
と返します。
- もしその中で指定したチャンネルが見つかった場合、
del_channel = message.guild.get_channel(ch_id)
にそのチャンネルのデータが入ります。
await sleep(10)
await del_channel.delete()
del_channel
を10秒後に削除します。