mastodonでトゥートできる文字数制限を500字以上にしたい

前提

mastodonはオープンソースですので、誰でも改造が可能ですが、このシステムは使い方によっては他のサーバーにいるユーザーに迷惑をかける可能性があります。トゥートの投稿は用法用量を守って行いましょう。また、この記事を見たうえで文字数制限を緩和し、それにより何らかの迷惑行為が発生した場合、私は一切の責任を負いかねます。

作業をするにょ

まずはmastodonユーザーに変更します。そして、ファイルを色々いじります。

app/javascript/mastodon/features/compose/components/compose_form.jsというファイルをいじります。

su - mastodon
cd live
vi app/javascript/mastodon/features/compose/components/compose_form.js

ファイル内で「/500」と検索し、数値を任意の値にします。今回は2023文字にしたいので、2023に変更してます。93行目と280行目にあると思います。2ヶ所修正しましょう。

「return~~」の方が93行目、「<characterCounter~~」の方が280行目です。

return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 2023 || (isOnlyWhitespace && !anyMedia));
  }

        <CharacterCounter max={2023} text={this.getFulltextForCharacterCounting()} />

続いてapp/validators/status_length_validator.rbというファイルを編集します。

MAX_CHARSの部分の1か所のみ任意の値にします。今回は2023文字にするので、2023と入力します。

   # frozen_string_literal: true
  
   class StatusLengthValidator < ActiveModel::Validator
     MAX_CHARS = 2023
     URL_PLACEHOLDER_CHARS = 23
     URL_PLACEHOLDER = 'x' * 23
  
     def validate(status)

3つ目にapp/serializers/rest/instance_serializer.rbというファイルを編集します。

12行目にある「attributes」の中に「:lanuages」だの「:configuration」だのいろんな文字が書かれると思います。

その一番下の「:registrations」の横に「:max_toot_chars」を追記します。

この時、「:registrations」の後ろに「,」を付ける事と、「:configuration」の前にコロンを付ける事を忘れないでください。

# frozen_string_literal: true

class REST::InstanceSerializer < ActiveModel::Serializer
  class ContactSerializer < ActiveModel::Serializer
    attributes :email

    has_one :account, serializer: REST::AccountSerializer
  end

  include RoutingHelper

  attributes :domain, :title, :version, :source_url, :description,
             :usage, :thumbnail, :languages, :configuration,
             :registrations, :max_toot_chars

  has_one :contact, serializer: ContactSerializer
  has_many :rules, serializer: REST::RuleSerializer

同じファイルでもう1か所追記します。一番下に移動して、下記のコードを加えてください。

def max_toot_chars 
   <任意の文字数>
end

「<任意の文字数>」は2つのファイルで指定した数値です。なので、私の場合は以下のようになります。

def max_toot_chars 
   2023
end

これでファイル編集作業は終了です。

最後にプリコンパイルをして反映させて、再起動をかければ反映されていると思います。

RAILS_ENV=production bundle exec rails assets:precompile #←少し時間かかります。
exit
sudo systemctl restart mastodon-*

最後に

この文字数に関するプログラムですが、私は利用者と鯖缶の間でしっかりとコミュニケーションをとって、最適な文字数にすることが最大のポイントだと思っております。

冒頭でも言いましたが、やろうと思えば4096文字とかもできます。

ただ、やりすぎるとTLの治安が悪くなったりして他の方に迷惑がかかる場合があります。

ちなみに今回は文字数を増やしましたが、数値次第で減らすことも可能です。

文字数制限1文字のサーバーとか、前にあったような。

とにかく、鯖缶は利用者に対しての許容範囲をしっかりと定め、荒らされない良い塩梅を見つけましょう。

そして、それでも荒らされて迷惑行為に発展する場合は容赦なくモデレーションしましょう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です