Misskeyのオセロ機能に対応したBotの開発方法をここに記します。
-
othelloストリームに以下のパラメータを付けて接続する:i: botアカウントのAPIキー
-
対局への招待が来たら、ストリームから
invitedイベントが流れてくる- イベントの中身に、
parentという名前で対局へ誘ってきたユーザーの情報が含まれている
- イベントの中身に、
-
othello/matchへ、user_idとしてparentのidが含まれたリクエストを送信する
| 無人島にAさん、Bさん、Cさんが流れついたとする。国へ帰る見込みがほとんどなく当然その状況では誰も日本円他法定通貨は欲しがらずまったく価値がない状況だとする | |
| Aさん食料つくる | |
| Bさん飲料つくる | |
| Cさん食料つくる | |
| という感じで漂着当初は食いつなぐために日々その日の全ての時間をついやしていました。当然みんなでその日得られた飲食物をわけあってました。 | |
| しばらくすると食料と飲料の生産効率があがり貯蔵できるようになってきました。そうなると余った時間を使って嗜好品も生産するようになってきました。 | |
| ここで3人は通貨みたいなものが必要だねという話になりました。 | |
| はじめはそこらにあった100個の貝殻を通貨とみたてて3人の合意のもと流通させてみました。当初は予想通りうまく流通して飲食物や嗜好品が交換されてそれに伴い |
| nodedef>name VARCHAR,label VARCHAR | |
| 1,social.touha.me | |
| 2,gs.jonkman.ca | |
| 3,m.bonzoesc.net | |
| 4,social.consumium.org | |
| 5,occitanie.social | |
| 6,redwombat.social | |
| 7,community.highlandarrow.com | |
| 8,mastodon.daiko.fr |
| #include <mach/mach_init.h> | |
| #include <mach/port.h> | |
| #include <sys/wait.h> | |
| #include <unistd.h> | |
| #include <stdio.h> | |
| int main() { | |
| for (;;) { | |
| pid_t pid = fork(); | |
| if (pid == 0) execv("/usr/bin/true", NULL); |
| -----BEGIN PGP PUBLIC KEY BLOCK----- | |
| mQINBFZwSl0BEADMMpK3813g3DEY8A6aEVlhp9XMfVYUelF5gLVsp/f0G8QUplLp | |
| SdKktGmbQS7g1Jaagl6tKLiTgE5lms8QetfUiZii9S2rI55ZLJ8fXSa7mNMehFkl | |
| 0FsBBLvoB6rccYBE2SrAd6FfdDmDui043hebXCokvis9sPH2yn8OUuTtpMkAMMz9 | |
| gdWOFPKD+dERNXIPy867YCse22mUhqz4W6ndO7CTVS/ZGfxQJLVqgbMQptYj8A2R | |
| 6wJmODE4dLDcguXfm32J5iwLpJ1Aj0RTK04XP0Tj2W7Agv9st2je7ri50R8PsLMr | |
| 6Q3SSE1RQIFLB52Bx3fwwYE1xVYCQ4y5hQlGhG6DlnsDpleETBcN29GjBazrzYqz | |
| M2cSqoDCzScAhMMcNS7ea/Z9z/irst2gcVdwsuXKheDmzR1rhi/MD1xADokfphuB | |
| 3kioRxGtAhDD011bJukEI2yi+yVf3jKom6M012WZ5mFOCaj53UYIwByPbCh1hGRl |
| /* | |
| This snippet is esssentially the same as being in the Twitter longer tweets test, for tweetdeck. | |
| The Tweet length counter is fixed by tricking TweetDeck into counting up to 140 characters, twice, so you'll see 140 | |
| instead of 280 in the counter but going over 140 will give you another set of 140 charactrs. | |
| */ | |
| TD.services.TwitterClient.prototype.makeTwitterCall=function(b,e,f,g,c,d,h){c=c||function(){};d=d||function(){};b=this.request(b,{method:f,params:Object.assign(e,{weighted_character_count:!0}),processor:g,feedType:h});return b.addCallbacks(function(a){c(a.data)},function(a){d(a.req,"",a.msg,a.req.errors)}),b}; | |
| twttrTxt=Object.assign({},twttr.txt,{isInvalidTweet:function(){return!1},getTweetLength:function(x){return x=twttr.txt.getTweetLength.apply(this,arguments),x<140||x/140>2?x:x%140}}); |
Estimated time: 10 minutes
| using System; | |
| struct ChainingComparable<T> | |
| where T : IComparable<T> | |
| { | |
| private T _value; | |
| public ChainingComparable(T value) => _value = value; | |
| public static implicit operator ChainingComparable<T>(T x) => new ChainingComparable<T>(x); | |
| public static implicit operator T(ChainingComparable<T> x) => x._value; | |
| public override string ToString() => _value.ToString(); |
Mastodon が他のインスタンスと情報交換をする OStatus API の使い方。使ってるだけのユーザは知る必要がない裏側の話。
Mastodon インスタンスに対して、RFC6415 が規定する /.well-known/host-meta というパスを要求すると以下の XML が返ってくる.
<?xml version="1.0"?>
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
<Link rel="lrdd" type="application/xrd+xml" template="https://[MASTODON_HOST]/.well-known/webfinger?resource={uri}"/>
</XRD>