Git Product home page Git Product logo

dine's Introduction

Languages

Frameworks

DB and Tools

Certificate

Static Badge Static Badge Static Badge Static Badge Static Badge

Static Badge Static Badge Static Badge

About Me

dine's People

Contributors

yudai-saito avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

dine's Issues

サーバー連携解除後にもtalk_serverにサーバーIDが存在してしまうのを修正

目標

  • 連携解除したサーバーのIDがtalk_serverに残ってしまい、連携していないサーバーにメッセージが送信できてしまうのを修正

作業

  • サーバー連携解除時に、talk_serverにセットされているidと同じだった場合、talk_serverを削除する
  • 参加サーバーが1つだけになった場合は、1だけのサーバーをtalk_serverにセットする

ログファイル肥大化対策

目標

現在の追記型ログで管理し続けると、ログファイルがでかくなりすぎるため対策する。

作業

  • 日付毎のログ出力に切り替える
  • 一定期間過ぎたログファイルは削除する

連携解除したサーバーの過去flexmessageをタップするとDBの検索エラーが発生するため修正

目標

  • 参加してた時のflex_messageをタップされると、その後にサーバー削除してるものでも、DBに検索をかけにいくのを修正

作業 - 設定

  • ユーザーの通知状態をDBから取得しているので、Noneの場合の条件分岐を作る。
  • Noneの場合は、連携解除されていると通知し、処理終了。

作業 - 選択

  • 選択されたサーバーのIDで、参加状態をDBから確認する
  • 参加が確認できなかった場合は、Falseを、できた場合はtalk_serverに設定してTrueを返す
  • 返ってきた値によって、ユーザーへの通知を変える

メモ

サーバー選択から、連携解除されたサーバーを選択されると、talk_serverに追加されて送信できてしまう。
サーバー設定から、連携解除されたサーバーの設定をいじると、sqlにエラーが出てしまう。

テーブル作成用コードを書く

目標

  • postgresqlへ追加予定のテーブルを定義する

作業

  • db.pyからpostgresqlへ接続
  • 各種テーブルの定義処理を書く

メモ

  • テーブルの構成がアンチパターンな可能性があるので確認をしてからコーディングすること

prefixをサーバー毎に任意で設定できるようにする

目標

  • サーバーごとにprefixを設定できるようにする

作業

  • bot起動時のprefixに設定ようコルーチンを設定
  • prefix_setはDBから参照されるように設定
  • set_prefixはdiscord_serverにprefixを追加

メモ

prefix設定時に2文字以上の文字は受け付けないようにする。

ワンタイムパスワード認証時のバグ系統修正

一覧

  • Discodにパスワードを何度も入力すると、入力時間が更新されてしまい、実質永遠に有効となってしまう。
    パスワードに対し使用フラグを立てて対応。新規にpasswordに' Boolean pass_use 'を作成。
  • サーバーに対してLINEを既に登録していても、パスワード入力をし、Flexメッセージを受け取れてしまう。
    add時にserverinfoからユーザの存在確認をして対応
  • 二回目登録以降のusersテーブルは、既に情報が入っているので、登録の必要がない。
  • flex messageを別変数に展開してから設定しないと、親変数が書き換わってるのでバグる。
  • LINE側で認証方式にしたので、server_infoのauth_flagは消して良い。

DiscordからLINEへメッセージを送信

目標

  • Discordのチャットから!dine @user , message でメッセージを送信できるようにする

作業

メモ

・登録してないユーザーへの送信が含まれていた場合
・複数人送信でのline apiの呼び出し回数

logging用のコンフィグを作成

目標

  • #1 作業をするためにdiscordbot, linebotようのログコンフィグ作成

作業

  • featureから別ブランチを切る
  • main, discord, lineの3ロガーのコンフィグ作成
  • 元ブランチへrebase

複数プロセスでのセッションを使用するとエラーを吐く

問題

  • ScheduleManagerクラスを定期実行するようにしてから、その他CRUD操作ができなくなった。

作業

  • コンストラクタで生成してるセッションを削除

原因

  1. 複数プロセスでセッションをもたせていると、どこかのプロセスでセッションが壊れてしまうようだ。
  2. CRUD操作のときに毎回セッション新しく作り直せばなんとか直った。
  3. それでいいのかはまだわからない。

複数のDiscordサーバーへ参加可能にする

問題

  • 現在のデータベース設計、フォロー時に登録処理だと複数のDiscordサーバーへ参加に対応できないため修正する

作業

  • user_infoテーブルのline_idカラムを主キーから外す
    server_idで検索し、line_idが複数出てくるようにするためには、line_idを複数個入れられるようにしなくてはいけなかった。
  • リッチメニューで、Discordへ登録を作成し、現在のフォロー時の処理を移植する

メモ

後にDiscord側でワンタイムパスワードを登録した際に、line_idとdiscord_idをusersに登録するが、discordへ登録するは複数回使えるので被らないように"存在確認をしてから追加"をすること

LINEBOTブロック時にユーザー情報削除をする

目標

  • linebotがブロックされたらDBに入っているユーザー情報はすべて消す

作業

  • ユーザー情報削除CRUDを作成
  • UnfollowEventを使用してブロック時に削除する処理を書く

メモ

passwordテーブルの中身は、5分後に自動的に消えるので削除処理は書かなくてもよい。

DiscordとLINEの紐付けコマンドを作る

目標

  • cogを使用して、ワンタイムパスワードと一致してるユーザーをusersテーブルに格納する

作業

  • passwordテーブルの入力認証フラグを追加する
  • cog.pyでコマンドのベースとなるDineクラスを作る
  • dineコマンドをグループとし、addコマンド(ユーザーがパスワード入力)を作る
  • lineにflexメッセージで登録するか聞く。
  • server_infoに登録ユーザを登録する

LINEのリッチメニューの機能追加

目標

  • 4つの機能を追加する
  • リッチメニューの画像作成

作業

  • サーバーの削除
  • サーバーの選択
  • サーバーの設定

削除

  • 参加サーバーをflex_messageで列挙する
  • 選択してもらったものを確認する
  • server_infoから情報削除

選択

  • 友だち追加時にline_id格納
  • サーバー参加時にtalk_serverの個数を確認し、1個未満だった場合は格納する。2個以上になったら空とする。

設定

  • テキスト通知、ボイチャ参加通知の選択を列挙
  • それぞれ、オンにする、オフにするメッセージを送信

LINE追加時のCRUD操作ラッパーの作成

目標

  • line_idをpasswordテーブルに追加するcrud操作ラッパーを作成する。

作業

  • db.pyにLINEBOT用CURDクラスを作成
  • line_idを格納するメソッド作成
  • ont_time_passwordを格納するメソッド作成

メモ

sessionをメソッドごとに投げてやらないと整合性保たれないから注意。
#5 を書く前にやったほうが後困らなさそう。

LINEからDiscordへメッセージを送信

目標

  • webhookを通じて送信者のアイコンをフレキシブルに変えたメッセージ送信を実装する

作業[webhook]

  • DiscordBOTがサーバー参加時にchannel_idを取得して格納を削除
  • サーバー参加時にLINE受信したいチャンネルでwebhookを作るようメッセージ送信
  • !dine channelコマンドでチャンネルにwebhookを作成
  • channel_idを削除し、webhook_idを新規追加
  • webhook新規作成時にwebhook_idをアップデート
  • webhookが既に設定されていた場合は、webhookを削除
  • サーバーからBOTが抜けた場合にwebhookを削除

作業[LINE -> Discord]

  • 5分おきにユーザのtalk_serverを削除する、ただし1つのサーバーのみ参加の場合は消さない
  • requestsでwebhookを通じてメッセージを送信
  • DBからwebhookを取得しurlを取得
  • line_idからユーザーのdisccord_id, discord_nameを取得
  • webhookに送信
  • webhookが見つからない場合はDiscordのチャットに設定を促すようメッセージを送信する
  • 5分経過している場合は選択してもらうように促すようメッセージを送信する

LINEBOT追加時の処理

目標

  • LINE追加時のユーザー登録処理を完成

作業

  • 追加, ブロック解除時に、line_id取得
  • "password"にline_id格納
  • パスワード生成メソッド
  • パスワードFlexMessage送信

追加作業

  • ワンタイムパスワードの存在確認をするCRUDが必要になった

DiscordのLINEメッセージ受信用チャネル設定コマンド

目標

  • DiscordのどのチャンネルでLINEのメッセージを受信するかを設定するコマンドを作る

作業

  • !dine channel コマンドを作成
  • 入力されたチャンネルのIDをdiscord_serverに格納する

メモ

サーバーにBOT追加時にデフォルトでチャンネルを設定するべきか?

passwordテーブルを時間制で削除

目標

  • 5分経過した列がある場合は削除を行う

作業

  • 時間経過監視プロセスを立てる
  • 1分おきにpasswordテーブルの5分以上経過している列を確認する
  • 5分以上経過しているものは削除する

DiscordとLINEの連携後に別アカウントで別のDiscordIDを登録できるのを修正

目標

  • LINEとDiscordの連携済みの後に、別のDiscord IDで登録できてしまうのを修正する

作業

  • Discordでパスワード入力時に、Userのdisocrd_idに既に存在するかを確認
  • 存在する場合は、登録済みのUser.discord_idのデータをすべて消していいかポストバック式のflex_message送信
  • 削除する項目は、UserInfoの該当discord_idとUserのtalk_server, discord_idとなる。

#3をrebaseする為のブランチ修正

  • developからfeature/#3_fixを切る
  • feature/#3_fix で git cherry-pick (feature/3#_make_logging_configでのコミット分だけ) をする
  • feature/#3_fixをdevelopへマージ
  • feature/#1でdevelopをrebase

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.