mo9mo9study / discord.CodeWarehouse

3 stars 2 forks source link

[新規開発]対話式"自己紹介"処理 #33

Closed supleiades closed 3 years ago

supleiades commented 3 years ago

現状

目的

issue起票時に思いついてる処理の流れ

1. 参加者はBOTによってチャンネルに誘導される
2. 自己紹介チャンネルの一番最新メッセージには自己紹介処理の起動説明がある
  2.2 起動は説明メッセージにあるスタンプを押したら実行されるとかかな?
3. 処理を起動するとDMにメッセージが飛んでくる
4. 質問事項に対話式で答えていき、その都度回答を変数に格納する
  4.2 質問事項
    - 名前
    - ツイッターID
    - 今までやってきたこと
    - これからやっていくこと
    その他
5. DMで「こんな内容でよろしいですか?」みたいな確認メッセージが送られる
  5.2 修正したい場合はそのメッセージにスタンプ、OKであればスタンプ、1分反応がなければ送信されるとか
6. 自己紹介チャンネルにDMの対話で作成された自己紹介がembedで送信される
7. 一つのメッセージで埋もれた「自己紹介処理の起動説明」のメッセージを削除する
8. 7で消したメッセージを再送信する

その他、関連処理

iceE-1591 commented 3 years ago

アイコンが変わった時、名前が変わった場合の処理は厳しいと思うので、ユーザーが自主的に替えたい場合に変えられるような何かを用意すると良さそうですね

それとBotによってチャンネルに誘導する手間を省いて、サーバー参加時にDMを直接送る方が良いと思いました。

自己紹介を見る時に定型文が一番下にあると、新しく自己紹介が追加されているか分かりづらくなる為です。

iceE-1591 commented 3 years ago

処理を変更

  1. サーバーに参加するとDMにメッセージが飛んでくる
  2. 質問事項に対話式で答えていき、その都度回答を変数に格納する 2.2 質問事項
    • 名前
    • ツイッターID
    • 今までやってきたこと
    • これからやっていくこと その他
  3. DMで「こんな内容でよろしいですか?」みたいな確認メッセージが送られる 3.2 修正したい場合はそのメッセージにスタンプ、OKであればスタンプ、1分反応がなければ送信される
  4. 自己紹介チャンネルにDMの対話で作成された自己紹介がembedで送信される
iceE-1591 commented 3 years ago

https://github.com/iceE-1591/discord.CodeWarehouse/commit/48a073886747747239bad6725641afa75addf16c

コミット内容

Botによる質問の数を1つ増やしました(性別) 回答によってEmbedのカラーが変わるような処理を追加しました

supleiades commented 3 years ago

ギルドにテストユーザーを参加させてみて、 出力されたエラー

--------------------
起動中...
BOT NAME : プールの監視員
BOT ID : 618077392686153742
--------------------
Ignoring exception in on_ready
Traceback (most recent call last):
  File "/home/centos/work/discord.CodeWarehouse/python/venv/lib/python3.8/site-packages/discord/client.py", line 333, in _run_event
    await coro(*args, **kwargs)
  File "/home/centos/work/discord.CodeWarehouse/python/Cogs/Managements/selfIntroduction.py", line 18, in on_ready
    self.INTRODUCTION_CHANNEL = self.GUILD.get_channel(self.INTRODUCTION_CHANNEL_ID)
AttributeError: 'NoneType' object has no attribute 'get_channel'
Ignoring exception in on_member_join
Traceback (most recent call last):
  File "/home/centos/work/discord.CodeWarehouse/python/venv/lib/python3.8/site-packages/discord/client.py", line 333, in _run_event
    await coro(*args, **kwargs)
  File "/home/centos/work/discord.CodeWarehouse/python/Cogs/Managements/selfIntroduction.py", line 27, in on_member_join
    await self.DEBUG_GUILD.create_text_channel(str(member.id))
AttributeError: 'Self_Introduction' object has no attribute 'DEBUG_GUILD'
supleiades commented 3 years ago

上のエラーデバッグサーバーに招待したプールの監視員BOTに権限付与して解決

supleiades commented 3 years ago

image

supleiades commented 3 years ago
supleiades commented 3 years ago

60 機能に合わせて現在node.jsで動いている

https://github.com/mo9mo9study/discord.CodeWarehouse/blob/master/node/autoCreateTimes.js この処理を.pyにリプレイスしつつ、現在の自己紹介の処理と連携させる

目的

on_message

# 特定チャンネル以外のmessage除外
# ボット除外
# embed以外除外
# 自己紹介チャンネルに投稿されたembedからfooterからユーザーIDを取得
# mo9mo9ギルド内のtimesという名前のチャンネルを全て取得
# 既にtimesが存在しているかどうか判定
# timesの総数を知らせる機能、(+times_{A-Z,数字}、times_{その他}の各チャンネル総数)
# timesチャンネルを作成(topicにembedから取得したユーザーIDを挿入)

channelCreate

# チャンネルtopicからユーザーIDを取得
# ユーザーオブジェクト取得
# チュートリアル送信
# 1〜5のリアクションを送信したメッセージに付与
supleiades commented 3 years ago

https://github.com/mo9mo9study/discord.CodeWarehouse/blob/master/node/activetimes_move.js この処理をtimes作成の処理と一緒のファイルに記述

on_message


# チャンネル名がtimes_で始まる場所でのやりとりのみ
# カテゴリー名がactive_timesに配属しているチャンネルでのやりとりは除外
# times内でやりとりが行われるとカテゴリー名Active_timesに移動する

## 定期実行
# 🔥ACTIVE_timesから全てのチャンネル(times)を取得
# 「/^times_[a-zA-Z0-9].*$/」にマッチするtimes_英数字のチャンネルとその他にチャンネルの二つのリストにそれぞれを格納
# times_英数字をカテゴリー名「🐣分報チャンネル(A-Z,数字)」に移動する
# times_その他をカテゴリー名「🐣分報チャンネル(A-Z,数字)」に移動する

## コマンド(times_reset)
# 目的:timesが異なった場所に移動してしまっている場合にのみ実行して正しいカテゴリーに移動させる(もしもの時用)
# 定期実行とは異なり、全てのチャンネルからIDを取得して必要なカテゴリーに移動
supleiades commented 3 years ago

通知先チャンネル: 801060150433153054 メンション宛ロール: 801060326627999774