2023-01-14 / @syui

twitter , api , go

twitter devのban祭りに参加した

twitter devにて、app(client)がbanされはじめているらしいという情報があり、自分が作ったやつは大丈夫かなと思い確認してみると、大丈夫そうだったので、ついでにmastodonのbotと連携させて遊んでたら…

結果としてban祭りに参加。

現在、read権限はあるんだけど、write権限が突然消えました。

twitter devで確認してみると

This App has violated Twitter Rules and policies. As a result, certain functions will be limited

本アプリは、Twitterのルールやポリシーに違反しています。そのため、一部の機能が制限されます。

ということらしい。

絵が駄目だったのか、mastodonのlinkがダメだったのか、あるいはそれ以外が原因か…わかりませんが、楽しかったからいいか。

仕組みとしては、botにtwitter-modeを実装して、twitter-modeがenableのときに特定のコマンド出力をtwitterにも所定の形式で投稿するようにしました。

timerなども実装してたので、例えば、時間を指定すると毎日stable-diffusionで画像を生成して投稿してくれる機能にも対応しました。twitter-modeに含めただけだけど。

そういえば、goで書いているclientのgh-actions(releases)が以前から壊れてて、直さないとなあと思ってたので、ついでに直したのと、clientに今回の投稿に必要なオプションを追加したりしました。gh-actionsはgoxをやめてgoreleaserを使い始めた。

name: release
on:
  pull_request:
    branches:
      - master
    types:
      - closed
  push:
    tags:
      - "v[0-9]+.[0-9]+.[0-9]+"
jobs:
  goreleaser:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v1
        with:
          fetch-depth: 1
      - name: Setup Go
        uses: actions/setup-go@v3
        with:
          go-version: 1.19
          check-latest: true
      - name: Run GoReleaser
        uses: goreleaser/goreleaser-action@v1
        with:
          version: latest
          args: release --rm-dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          C_KEY: ${{ secrets.C_KEY }}
          CS_KEY: ${{ secrets.CS_KEY }}
project_name: twg
env:
  - GO111MODULE=on
before:
  hooks:
    - go mod tidy
builds:
  - main: .
    binary: twg
    ldflags:
      - -s -w
      - -X main.Version={{.Version}}
      - -X main.Revision={{.ShortCommit}}
      - -X github.com/syui/twg/oauth.ckey={{ .Env.C_KEY }}
      - -X github.com/syui/twg/oauth.cskey={{ .Env.CS_KEY }}
    env:
      - CGO_ENABLED=0

archives:
  - name_template: '{{ .ProjectName }}_{{ .Os }}_{{ .Arch }}{{ if .Arm }}v{{ .Arm }}{{ end }}'
    replacements:
      darwin: darwin
      linux: linux
      windows: windows
      386: i386
      amd64: x86_64
    format_overrides:
      - goos: windows
        format: zip
release:
  prerelease: auto