|
@@ -142,11 +142,19 @@ export default class {
|
|
|
if (opt.redis) this.redis = new RedisSvc(opt.redis);
|
|
|
ScreenNameNormalizer._queryUser = this.queryUser;
|
|
|
sendTweet = (idOrQuery, receiver, forceRefresh) => {
|
|
|
- const send = (id: string) => this.getTweet(
|
|
|
- id,
|
|
|
- this.sendTweets({sourceInfo: `tweet ${id}`, reportOnSkip: true, force: forceRefresh}, receiver),
|
|
|
- forceRefresh
|
|
|
- )
|
|
|
+ const match = /^last(|-\d+)@([^\/?#,]+)((?:,no.*?=[^,]*)*)$/.exec(idOrQuery);
|
|
|
+ const query = () => this.queryTimeline({
|
|
|
+ username: match[2],
|
|
|
+ count: 1 - Number(match[1]),
|
|
|
+ noreps: {on: true, off: false}[match[3].replace(/.*,noreps=([^,]*).*/, '$1')],
|
|
|
+ norts: {on: true, off: false}[match[3].replace(/.*,norts=([^,]*).*/, '$1')],
|
|
|
+ }).then(tweets => tweets.slice(-1)[0].id_str);
|
|
|
+ (match ? query() : Promise.resolve(idOrQuery))
|
|
|
+ .then((id: string) => this.getTweet(
|
|
|
+ id,
|
|
|
+ this.sendTweets({sourceInfo: `tweet ${id}`, reportOnSkip: true, force: forceRefresh}, receiver),
|
|
|
+ forceRefresh
|
|
|
+ ))
|
|
|
.catch((err: {code: number, message: string}[]) => {
|
|
|
if (err[0]?.code === 34)
|
|
|
return this.bot.sendTo(receiver, `找不到用户 ${match[2].replace(/^@?(.*)$/, '@$1')}。`);
|
|
@@ -156,14 +164,6 @@ export default class {
|
|
|
}
|
|
|
this.bot.sendTo(receiver, '找不到请求的推文,它可能已被删除。');
|
|
|
});
|
|
|
- const match = /^last(|-\d+)@([^\/?#,]+)((?:,no.*?=[^,]*)*)$/.exec(idOrQuery);
|
|
|
- const query = () => this.queryTimeline({
|
|
|
- username: match[2],
|
|
|
- count: 1 - Number(match[1]),
|
|
|
- noreps: {on: true, off: false}[match[3].replace(/.*,noreps=([^,]*).*/, '$1')],
|
|
|
- norts: {on: true, off: false}[match[3].replace(/.*,norts=([^,]*).*/, '$1')],
|
|
|
- }).then(tweets => tweets.slice(-1)[0].id_str);
|
|
|
- (match ? query() : Promise.resolve(idOrQuery)).then(send);
|
|
|
};
|
|
|
sendTimeline = ({username, count, since, until, noreps, norts}, receiver) => {
|
|
|
const countNum = Number(count) || 10;
|