What do Russians think about the war? Telegram data

Matthew McKeever
8 min readAug 8, 2022

For the past few months I’ve been studying war propaganda on Telegram. One of the views I’ve hit upon is that what I called a few days ago subtleness is important. Although our heads are turned at more outrageous words and utterances, the everyday work of propaganda involves slight and subtle tools. One very simple form of propaganda is simply the things one chooses to say or not to say, and I’ve suggested that simply by unsophisticatedly counting words we can defend the idea that it’s the West — the US, EU, and so on — that Russia is against primarily. More recently I looked at how slightly different ways of phrasing a given event (in terms of ‘occupation’ or in terms of ‘liberation’) might serve to frame the issue in a subtle way.

But in all this work there’s been an important figure missing: the audience. Propaganda has a target: roughly, one uses propaganda to convince someone of something by bypassing their rational capacities for evaluating claims. That implies the existence of someone you want to convince, and in many cases mislead.

In this case, the audience is the Russian people. What exactly they think about the war is hard to find. Any protests would quickly be shut down, perhaps with violence and the courts, by the government; and I at least would be wary about speaking up on Vkontakte were I in Russia. By contrast, the Russian voices one might encounter — on Youtube or Twitter — are WEIRD, or at least weird-inspired, more or less, most likely expats and certainly not representative of the many.

So arguably there’s a need for information on what Russians think. Happily, Telegram — maybe — has something to offer us. Like other social media and messaging apps, it offers users a chance to react to posts — with thumbs up, thumbs down, hearts, and so on. I used, in a way I’ll detail, the Telegram API to get this — as I’ll hereafter call it — reception information for the 5000 most recent posts by TASS, a Russian news agency (a dying computer, a worry about rate limits, and an impending move limited me in this way — it would be very valuable to get data from the start of the war, and I think easily doable).

In this post I do two things. First, I lay out the method — as far as I can tell, extant OSINT (open-source intelligence) libraries for Telegram don’t offer this functionality, and the internet is a bit misleading about how to actually get reception information from the Telegram api and the libraries that abstract from its fidgywidgyness. The second is to analyse some data thus gotten, looking at the most popular and most unpopular posts.

If you’re not interested in the details, skip the first section. By contrast, if you want to explore yourself, download the spreadsheet (which also contains a bunch of only slightly cleaned Ukrainian media data, and separate sheets listing the most and least liked/disliked, as well as the total number of interactions per post).

(Update: I decided to turn this into a slightly bigger project by making a bot that tweets out the most and least popular messages on a given day. Check it out here.)

The Details

First, get a Telegram API key and API hash. Then download a json archive of posts for the time period you’re interested in. Get the channel id from it, remembering to preface it with -100 (important!) in your code. Then, in Python>3.6, use your package manager to get pyrogram, a high-level library for dealing with Telegram’s API. Then do something like this:

from pyrogram import Client
from pyrogram.raw.functions.messages import GetMessageReactionsList
file=open(“russian_out_new.txt”,”w”, encoding=”utf-8")app = Client(
“my_account”,
api_id=YOUR ID HERE,
api_hash=’YOUR HAS HERE’
)
chat_id = -100NNNNNNN # YOUR CHANNEL HERE, PRECEDED BY -100 IF IT’S A PUBLIC GROUP
number_of_results=10 #the number of messages to return
with app:
peer = app.resolve_peer(chatid)
file.write(“id;date;react;\n”)
for message in app.get_chat_history(chatid, number_of_results):
file.write(str(message.id)+”;”)
file.write(str(message.date)[0:10]+”;”)
file.write(str(message.reactions)+”;\n”)
#This writes the data as a ; separated CSV.file.close()

That’s it! You can then manipulate and tidy the data as you wish; use the id which is the first field to look up the corresponding posts from the json archive.

I recommend not using Excel!

The Results

What I did was the following: I made lists of the most interacted with, most thumbs-upped, and most thumbs-downed posts for the time period I was interested in for the Russian TASS channel. Let’s consider these latter two categories.

Note that I count only thumbs up, not heart or other displays of positive affect. That’s because I ended up doing most of the data analysis in Excel and my taste for nested ifs only goes so far. But a worthwhile addition would be to aggregate the positive and the negative reacts.

The mean number of thumbs up is 221. That’s not the most helpful statistic to use as the data is long-tailed; again, with more time I’d do something better. The most thumbs-upped posts received respectively 1761, 1652, 1642, and 1569 thumbs ups. 45 of 5000 posts get more than one thousand; better stats are to come (maybe).

Here are the most popular posts, in order, in Russian then English:

Спикер Госдумы Вячеслав Володин заявил, что считает правильным ввести запрет на пропаганду нетрадиционных ценностей в России. С выходом из Совета Европы ушли в прошлое требования узаконить в России однополые браки. Попытки навязать нашему обществу чуждые ценности провалились. Правильно ввести запрет пропаганды нетрадиционных ценностей

State Duma Speaker Vyacheslav Volodin said that he considers it right to introduce a ban on the promotion of non-traditional values in Russia. With the exit from the Council of Europe, demands to legalize same-sex marriages in Russia have become a thing of the past. Attempts to impose alien values on our society have failed. Correctly introduce a ban on propaganda of non-traditional values

Западные страны заявляют о невозможности нарушения территориальной целостности Украины, забывая, что сами они грубо нарушили территориальную целостность Сербии, заявил президент Сербии Александар Вучич в интервью на канале TV Pink

Western countries declare the impossibility of violating the territorial integrity of Ukraine, forgetting that they themselves grossly violated the territorial integrity of Serbia, Serbian President Aleksandar Vucic said in an interview on TV Pink

Трамп считает, что Зеленскому следовало отказаться от НАТО и признать Крым российским. По мнению бывшего президента США, это позволило бы избежать конфликта с РФ.

Trump believes that Zelensky should have abandoned NATO and recognized Crimea as Russian. According to the former US president, this would have avoided a conflict with the Russian Federation.

⚡️КНДР признала Донецкую Народную Республику, сообщил Пушилин. Международный трейдер Trafigura завершил продажу своей доли 10% в проекте \”Восток ойл\”, покупателем доли стала зарегистрированная в Гонконге компания Nord Axis Limited.”

⚡️North Korea recognized the Donetsk People’s Republic, Pushilin said. Trafigura, an international trader, has completed the sale of its 10% stake in the Vostok Oil project, and Nord Axis Limited, a company registered in Hong Kong, has become the buyer of the stake.

“❗️\”Газпром\” прекратил поставки газа в Латвию в рамках июльской заявки в связи с нарушением условий отбора газа.”

“❗️ \ “Gazprom \” stopped gas supplies to Latvia as part of the July application due to violation of the conditions for gas withdrawal.”

What to make of that? It’s very hard to say. It’s noteworthy, arguably, that three of the most popular involve notably authoritarian leaders, but properly to make the case that we have something of significance here would require showing that pro-authoritarian messages in general do better than some baseline: that’s an interesting project but not one to be carried out here.

Let’s consider the least popular posts. Here we are:

Шольц что ЕС не снимет санкции с РФ в случае мира на Украине на условиях Москвы. Канцлер Германии пообещал поддерживать Киев до тех пор, пока он в этом нуждается.

Scholz announced that the EU will not lift sanctions from the Russian Federation in the event of peace in Ukraine on Moscow’s terms. The German chancellor promised to support Kyiv as long as it needs it.

Елена Зеленская стала первой женой иностранного лидера, выступившей перед Конгрессом США. В своем обращении она попросила предоставить Киеву оружие и системы противовоздушной обороны

Elena Zelenskaya became the first wife of a foreign leader to speak before the US Congress. In her appeal, she asked to provide Kyiv with weapons and air defense systems.

Кандидат в премьеры Британии Пенни Мордонт пообещала возглавить направленные против РФ усилия Запада. Она также сообщила, что приняла у себя дома беженца с Украины.

British Prime Minister candidate Penny Mordaunt has vowed to lead Western efforts against Russia. She also said that she received a refugee from Ukraine at her home.

Глава МИД Великобритании Лиз Трасс, выдвинувшая свою кандидатуру на пост премьер-министра страны, заявила, что Лондон должен добиться поражения РФ на Украине. Мы переживаем крупные вызовы как страна — начиная от вопросов в сфере экономики и безопасности до проблем в области окружающей сред.”Нам необходим премьер-министр с опытом, который с первого же дня начнет проводить свой курс, направленный будь то на поражение Путина на Украине или развитие экономики

British Foreign Secretary Liz Truss, who nominated her candidacy for the post of Prime Minister of the country, said that London should achieve the defeat of the Russian Federation in Ukraine. We are facing major challenges as a country, ranging from economic and security issues to environmental issues. “We need a prime minister with experience who will start on his course from day one, whether it be to defeat Putin in Ukraine or economic development

Again it’s tempting to say we don’t have enough information. It’s understandable why each of these posts would irritate the audience, but should they irritate the audience more than other things, like the many companies that closed in Russia, or the course of the Ruble, or Ukrainian territorial gains? (In fact these are bad rhetorical questions, since as mentioned we only cover the most recent most, since July fourth, but there are surely good questions I could ask for this time period that just escape me at the moment).

Extremely tentatively, though, it arguably is noticeable that none of the things that got attention, either positive or negative, were primarily events on the ground either in Ukraine or in Russia, which would support my already-mentioned view that Russia views this as a war with the West.

There’s more work to be done. There’s no evidence so far that this isn’t all bot-led activity, or astro-turfed, or something. TASS has half a million followers, a small fraction of the country: its representativeness needs to be studied. It would perhaps be more worthwhile to see what the 1 million followers of, say, the trollish Soloviev, liked.

But — and this is the main point — we should do this work. We need to find out what Russians think, because even in a country like Russia where opposition is repressed, an anti-war (or a pro-war) population will affect the course of the fighting of the ground — the politically possible, in part, determines what and how people suffer, and how it can be stopped, and so should be something we all care about.

--

--