Бот, который меняет изображение профиля в Twitter

#javascript #node.js #twitter #bots

#javascript #node.js #Twitter #боты

Вопрос:

Привет, я хотел бы закодировать бота с помощью nodejs для изменения изображения профиля

 var Twitter = require('twitter');
var data = require('fs').readFileSync('image1.png');

var client = new Twitter({
    consumer_key: 'asd',
    consumer_secret: 'asd',
    access_token: 'asd',
    access_token_secret: 'asd'
});

client.post('account/update_profile_image', {image: data},  function(error, tweet, response) {
  console.log("done");  // Raw response object.
});
  

ну, кажется, это работает, но изображение моего профиля не меняется

Комментарии:

1. Что вы подразумеваете под «кажется, работает, но изображение моего профиля не меняется»? Для меня это звучит неубедительно. Вы видите какие-либо ошибки? Есть ли что-нибудь полезное, если вы отлаживаете и оцениваете переменные?

2. @JeffMergler ну, когда я выполняю код, ошибки нет, но на моем изображении профиля ничего не происходит

3. Вы читали документацию? developer.twitter.com/en/docs/accounts-and-users /… : «Изображение аватара для профиля в кодировке base64. Должно быть допустимое изображение в формате GIF, JPG или PNG размером менее 700 килобайт. Изображения шириной более 400 пикселей будут уменьшены.»

4. @JeffProd да, чтобы попробовать, я сменил свою фактическую фотографию профиля на другую и попытался обновить ее на «обычную», которую я использую, но это не вступило в силу, и я не вижу никакого сообщения об ошибке

Ответ №1:

Как сказано в документации, изображение должно быть закодировано в base64. Вот рабочий код :

 var fs = require('fs');
var Twit = require('twit'); // npm install twit

var T = new Twit({
    consumer_key:         '*',
    consumer_secret:      '*',
    access_token:         '*',
    access_token_secret:  '*'
});

var image64str = fs.readFileSync('kitten.jpg', {encoding: 'base64'});

T.post('account/update_profile_image', { image: image64str }, function(err) {
    if(err) {console.error(err); return;}
    console.log('done');
});
  

Комментарии:

1. спасибо, чувак, извини, что ввел в заблуждение, лол, я не очень хорош в этом, я думал, что могу напрямую использовать изображение, которое было изображением профиля

2. я получил еще одну ошибку «Ошибка декодирования JSON: в теле HTTP-ответа Twitter был недопустимый JSON». вы не получили никакой ошибки?

3. Нет, у меня не было ошибок. Пожалуйста, попробуйте «npm install twit».

4. я удалил имеющуюся у меня версию и переустановил ее, и она работает, спасибо idk, почему она не хотела работать раньше