Skip to content

Commit cb64443

Browse files
Рабочая версия
0 parents  commit cb64443

6 files changed

Lines changed: 428 additions & 0 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/node_modules/
2+
/.idea/

index.js

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
"use strict";
2+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4+
return new (P || (P = Promise))(function (resolve, reject) {
5+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8+
step((generator = generator.apply(thisArg, _arguments || [])).next());
9+
});
10+
};
11+
var __asyncValues = (this && this.__asyncValues) || function (o) {
12+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13+
var m = o[Symbol.asyncIterator], i;
14+
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15+
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17+
};
18+
Object.defineProperty(exports, "__esModule", { value: true });
19+
const vk_io_1 = require("vk-io");
20+
// токен пользователя
21+
const TOKEN = 'token';
22+
// группа где будем удалять комментарии
23+
const VK_ID_GROUP = 0;
24+
// чьи комментарии будем удалять
25+
const VK_ID_MY = 0;
26+
const vk = new vk_io_1.VK({ token: TOKEN });
27+
const getPosts = (offset = 0) => __awaiter(void 0, void 0, void 0, function* () {
28+
const getPostsGroup = yield vk.api.wall.get({
29+
owner_id: VK_ID_GROUP,
30+
offset
31+
});
32+
return getPostsGroup.items;
33+
});
34+
const getCommentsPost = (postId, offset = 0) => __awaiter(void 0, void 0, void 0, function* () {
35+
const getComments = yield vk.api.wall.getComments({
36+
post_id: postId,
37+
owner_id: VK_ID_GROUP,
38+
count: 100,
39+
offset
40+
});
41+
if (offset === 0 && getComments.count > 100) {
42+
console.log(`Комментариев к записи больше 100, получаю еще.`);
43+
for (let i = offset; i < getComments.count; i += 100) {
44+
const getComAdd = getCommentsPost(postId, i);
45+
getComments.items.push(getComAdd);
46+
}
47+
}
48+
return getComments;
49+
});
50+
const checkMyCommentPost = (comments) => { var comments_1, comments_1_1; return __awaiter(void 0, void 0, void 0, function* () {
51+
var e_1, _a;
52+
console.log('Проверка комментариев');
53+
try {
54+
for (comments_1 = __asyncValues(comments); comments_1_1 = yield comments_1.next(), !comments_1_1.done;) {
55+
const comment = comments_1_1.value;
56+
if (!(comment === null || comment === void 0 ? void 0 : comment.id))
57+
return;
58+
console.log(`Запись: id` + (comment === null || comment === void 0 ? void 0 : comment.post_id));
59+
if (comment.from_id == VK_ID_MY) {
60+
yield deleteComment(comment.id);
61+
}
62+
}
63+
}
64+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
65+
finally {
66+
try {
67+
if (comments_1_1 && !comments_1_1.done && (_a = comments_1.return)) yield _a.call(comments_1);
68+
}
69+
finally { if (e_1) throw e_1.error; }
70+
}
71+
}); };
72+
const deleteComment = (commentId) => __awaiter(void 0, void 0, void 0, function* () {
73+
var _a;
74+
try {
75+
const deleteCom = yield vk.api.wall.deleteComment({
76+
owner_id: VK_ID_GROUP,
77+
comment_id: commentId
78+
});
79+
if (deleteCom === 1)
80+
console.log(`Комментарий ${commentId} удален`);
81+
else
82+
console.log(`Комментарий ${commentId} вернул другой ответ. ${deleteCom}`);
83+
}
84+
catch (error) {
85+
// @ts-ignore
86+
if (error && (error === null || error === void 0 ? void 0 : error.message))
87+
console.error(`Ошибка удаления комментария id${commentId}. Message: ${(_a = error === null || error === void 0 ? void 0 : error.message) !== null && _a !== void 0 ? _a : 'текста нет'}`);
88+
}
89+
});
90+
const start = () => __awaiter(void 0, void 0, void 0, function* () {
91+
let offset = 100;
92+
while (offset < 734) {
93+
const startPost = yield getPosts(offset);
94+
console.log(`Offset: ${offset}`);
95+
for (const post of startPost) {
96+
if (!(post === null || post === void 0 ? void 0 : post.id))
97+
return;
98+
yield getCommentsPost(post.id).then((comments) => __awaiter(void 0, void 0, void 0, function* () {
99+
console.log(`Запускаю проверку по полученным комментариям, количество ${comments.count}`);
100+
yield checkMyCommentPost(comments.items);
101+
}));
102+
}
103+
offset += 100;
104+
}
105+
});
106+
start().then(r => console.log('Запускаюсь'));

index.ts

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
import {VK} from 'vk-io'
2+
import { WallWallComment } from 'vk-io/lib/api/schemas/objects';
3+
// токен пользователя
4+
const TOKEN = 'token';
5+
// группа где будем удалять комментарии
6+
const VK_ID_GROUP = 0;
7+
// чьи комментарии будем удалять
8+
const VK_ID_MY = 0;
9+
const vk = new VK({token: TOKEN})
10+
11+
const getPosts = async ( offset: number = 0) => {
12+
const getPostsGroup = await vk.api.wall.get({
13+
owner_id: VK_ID_GROUP,
14+
offset
15+
});
16+
return getPostsGroup.items;
17+
};
18+
19+
const getCommentsPost = async (postId: number, offset = 0) => {
20+
const getComments = await vk.api.wall.getComments({
21+
post_id: postId,
22+
owner_id: VK_ID_GROUP,
23+
count: 100,
24+
offset
25+
});
26+
if(offset === 0 && getComments.count > 100) {
27+
console.log(`Комментариев к записи больше 100, получаю еще.`);
28+
for(let i = offset; i < getComments.count; i+=100) {
29+
const getComAdd = getCommentsPost(postId, i);
30+
getComments.items.push(getComAdd)
31+
}
32+
}
33+
return getComments;
34+
};
35+
36+
const checkMyCommentPost = async (comments: WallWallComment[]) => {
37+
console.log('Проверка комментариев')
38+
for await(const comment of comments) {
39+
if(!comment?.id) return;
40+
console.log(`Запись: id` + comment?.post_id)
41+
if(comment.from_id == VK_ID_MY) {
42+
await deleteComment(comment.id) }
43+
44+
}
45+
}
46+
47+
const deleteComment = async (commentId: number) => {
48+
try {
49+
const deleteCom = await vk.api.wall.deleteComment({
50+
owner_id: VK_ID_GROUP,
51+
comment_id: commentId
52+
})
53+
if(deleteCom === 1) console.log(`Комментарий ${commentId} удален`)
54+
else console.log(`Комментарий ${commentId} вернул другой ответ. ${deleteCom}`)
55+
} catch (error) {
56+
// @ts-ignore
57+
if(error && error?.message) console.error(`Ошибка удаления комментария id${commentId}. Message: ${error?.message ?? 'текста нет'}`);
58+
}
59+
}
60+
61+
const start = async () => {
62+
let offset = 100;
63+
while(offset < 734) {
64+
const startPost = await getPosts(offset)
65+
console.log(`Offset: ${offset}`);
66+
for (const post of startPost) {
67+
if (!post?.id) return;
68+
await getCommentsPost(post.id).then(async(comments) => {
69+
console.log(`Запускаю проверку по полученным комментариям, количество ${comments.count}`);
70+
await checkMyCommentPost(comments.items)
71+
})
72+
}
73+
offset+= 100;
74+
}
75+
}
76+
start().then(() => console.log('Запускаюсь'));
77+

package.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"name": "my_comments_marusia",
3+
"version": "1.0.0",
4+
"description": "",
5+
"main": "index.js",
6+
"scripts": {
7+
"test": "echo \"Error: no test specified\" && exit 1",
8+
"start": "node index.js"
9+
},
10+
"keywords": [],
11+
"author": "",
12+
"license": "ISC",
13+
"dependencies": {
14+
"vk-io": "^4.7.0"
15+
}
16+
}

pnpm-lock.yaml

Lines changed: 124 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)